gpt4 book ai didi

c# - 为什么 WPF Presentation 库在 StringBuilder.ToString() 中包装字符串?

转载 作者:IT王子 更新时间:2023-10-29 04:31:43 25 4
gpt4 key购买 nike

ILSpyPresentationCore.dll (.NET4 WPF) 中找到的代码:

// MS.Internal.PresentationCore.BindUriHelper
internal static string UriToString(Uri uri)
{
if (uri == null)
{
throw new ArgumentNullException("uri");
}

return new StringBuilder(uri.GetComponents(uri.IsAbsoluteUri ? UriComponents.AbsoluteUri : UriComponents.SerializationInfoString, UriFormat.SafeUnescaped), 2083).ToString();
}

uri.GetComponents的返回类型是string,为什么方法不直接返回string值,而是将其包裹在a StringBuilder(string).ToString(); 这是设计使然吗?在一般意义上这样做的原因是什么?它会减少分配或改进垃圾收集或用于线程安全吗?

最佳答案

我唯一能想到的是,如果传递给 stringBuilder 的第一个参数为 null,则 stringbuilder 将返回 string.empty 而不是 null(参见 http://msdn.microsoft.com/en-us/library/zb91weab(v=vs.100).aspx)

虽然字符串是可以为空的...但何必呢?!

自己做一个检查并返回一个空字符串会比新建一个 stringBuilder 实例更有效率。

第二个参数只是建议的大小,stringbuilder 应该初始化为...

对 OP 问题的评论是正确的,它似乎有点矫枉过正。

关于c# - 为什么 WPF Presentation 库在 StringBuilder.ToString() 中包装字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21479407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com