.NET中如何复用Uri对象,避免重复实例化新对象?
问题解答
首先明确结论:无法在不创建新实例的情况下,直接修改已有Uri对象的指向地址。
原因说明
.NET 体系中的Uri类被设计为不可变类型,实例化完成后所有属性均为只读状态,你尝试给AbsoluteUri等属性赋值的写法无法通过编译,这是框架层面的设计限制,目的是保证Uri实例的线程安全、哈希值稳定,避免使用过程中被意外修改导致不可预期的错误。
优化建议
如果你担心频繁创建Uri实例带来性能损耗,大可不必:Uri实例化的开销极低,常规业务场景下几乎不会成为性能瓶颈,你原本给uri变量重新赋值新Uri实例的写法是官方推荐的标准写法。
如果需要频繁调整地址的各个组成部分,可以使用UriBuilder类实现动态修改,最终再生成Uri实例,示例代码如下:
UriBuilder uriBuilder = new UriBuilder("test"); // 动态修改地址参数 uriBuilder.Host = "www.example.com"; uriBuilder.Path = "/new/path"; uriBuilder.Query = "id=1"; // 最终生成所需的Uri实例 Uri resultUri = uriBuilder.Uri;
内容的提问来源于stack exchange,提问作者stanimirsp
相关产品推荐
相关产品推荐

