最近一位同事告诉我,设置字符串变量时不要使用string.Empty,而是使用null,因为它会污染堆栈?

他说不要这样做

string myString=string.Empty;但是做string mystring=null;

这真的很重要吗?我知道线是一个物体,所以它有一定的意义.

我知道这是个愚蠢的问题,但你的看法是什么?

推荐答案

nullEmpty非常不同,我不建议随意在它们之间切换.但两者都没有任何额外的"成本",因为Empty是一个单一的固定参考(你可以多次使用它).

烟囱上没有由ldsfld引起的"污染"——这种担忧是....疯子加载null可以说更便宜,但如果不小心判断值,可能会导致空引用异常.

就我个人而言,我两个都不用...如果我想要一个空字符串,我使用""——简单而明显.实习意味着这also没有每次使用的开销.


在IL级别,""和Empty之间的区别只是ldstr与ldsfld-但两者都给出了相同的单一实例化字符串引用.此外,在较新的.NET版本中,JIT直接拦截这些内容,从而产生实际执行静电字段查找的空字符串引用without.基本上,除了可读性之外,完全没有理由关心这两种方式.我只用了"".

.net相关问答推荐

Azure管道-使用.NET 8 RC2 SDK生成C#项目失败

.Include() 与 .Load() 在 EntityFramework 中的性能

在目录中创建应用程序快捷方式

有什么方法可以使用 .NET 应用程序使用 git 吗?

比较 C# 中的字符串和对象

为什么循环引用被认为是有害的?

为什么字典比列表快得多?

C# 中基于接口编程的运算符重载

从 List 到数组 T[] 的转换

C# 的浮点比较函数

ObservableCollection<> 与 List<>

在同一解决方案中引用 2 个不同版本的 log4net

如何在 C# 中安全地将 System.Object 转换为bool?

Iif 在 C# 中等效

如何确定字符串是 C# 中的有效 IPv4 还是 IPv6 地址?

无法使用 Unity 将依赖项注入 ASP.NET Web API 控制器

为什么发布和调试模式下的代码行为不同?

确定使用 ContextMenuStrip 的控件

WPF中的依赖属性和附加属性有什么区别?

从 bcp 客户端接收到 colid 6 的无效列长度