Vb.net 重构:替换为常量字符串。空

Vb.net 重构:替换为常量字符串。空,vb.net,refactoring,devexpress,Vb.net,Refactoring,Devexpress,我有下面一行代码 Dim a As String = "" 重构建议将“替换为String.Empty 这是一种重新分解,但为什么呢?既然我是一个新手,在以后的声明中我是否应该更好地使用字符串。Empty?该字段的值是零长度字符串“” 在应用程序代码中,此字段最常用于将字符串变量初始化为空字符串的赋值。要测试字符串的值是null还是string.Empty,请使用IsNullOrEmpty方法。这几乎是个人偏好的问题。我更喜欢尽可能使用常量,尤其是如果我正在使用的框架已经提供了常量。我不会刻意

我有下面一行代码

Dim a As String = ""
重构建议将
替换为
String.Empty

这是一种重新分解,但为什么呢?既然我是一个新手,在以后的声明中我是否应该更好地使用
字符串。Empty

该字段的值是零长度字符串“”


在应用程序代码中,此字段最常用于将字符串变量初始化为空字符串的赋值。要测试字符串的值是null还是string.Empty,请使用IsNullOrEmpty方法。

这几乎是个人偏好的问题。我更喜欢尽可能使用常量,尤其是如果我正在使用的框架已经提供了常量。我不会刻意消除代码中对“”的每次使用。(特别是因为编译器将折叠字符串文字的所有重复,并在运行时只保留其中一个。)

这实际上主要是偏好的问题。就我个人而言,我发现String.Empty更清楚地表明了程序员的意图(例如,他没有意外地将空字符串而不是空格放进去)。。。这可能就是为什么“重构”建议这样做。但除此之外,它们是完全一样的。按您认为合适的方式操作。

“”可能会创建一个新的字符串对象,而String.Empty是指预定义的(现有)对象。这是一个次要的吹毛求疵,但重构工具就是这么做的:查找各种问题,包括次要吹毛求疵。

我总是反其道而行之,将字符串设置为
null
。实际上,在某些情况下,您想用“”表示的意思是,您构建了一个字符串,但没有内容。通常你的意思是,你有一个未构建的字符串。这就是为什么我更喜欢
null
构造。

这如何回答OP的问题?@SashaGoldshtein,我通过我的解释告诉他,使用String.Empty等于使用“”和String.Empty将为变量指定空字符串的正确初始化。