C# return string.Empty; and return String.Empty;
Possible Duplicate:
In C#, should I use string.Empty or String.Empty or “”?
有什么区别:
1 2 3
| return string.Empty;
return String.Empty;
return""; |
- 前两个:没什么。第三个:不多。
- 请参阅stackoverflow.com/questions/151472/…
- 相关stackoverflow.com/questions/7074/…
- 感谢您提出相关问题!
- @吉博克以后,在问这样的问题之前,请先搜索一下,不难找到。
- 谢谢,塞维,我会记住你的建议
由于string是string的语言别名,所以第一个表达式和第二个表达式之间没有绝对的区别。
从.NET 2开始,""返回与String.Empty完全相同的对象,使这三个语句在返回的值方面完全等价。即使在2之前的.NET中,也不会因为实习生而创建多个对象。
第一个和第二个代码段将生成不同于第三个代码段的IL代码,但它们都将返回相同的对象。
- 我认为空字符串文字产生的IL与使用String.Empty不同。相当微不足道,但我不认为这是技术上的"完全相同的对象"或"完全相同的等价物"。
- 谢谢你的回答,只是出于好奇,在有意义的时候使用别名。那么,什么时候使用它们是常见的呢?多谢!
- @吉布,使用一个和另一个主要是个人品味的问题。我的猜测是别名只是为了让事情看起来更熟悉C++程序员。同样,int是Int32的别名,long是Int64的别名等。
- @Gibbok我使用string,因为这是我的团队的偏好;不过,使用string并没有问题。
- @克里斯辛克莱尔,这是一个很好的观点-我编辑了这个答案来提到我。
- @实际上,在阅读更多内容时,dasbinkenlight似乎在为发布模式编译时,编译器会将它们优化为相同的汇编代码。:)但是我认为优化实现细节取决于特定的编译器/平台。
- 伙计们,你们说的IL码是什么意思?你的意思是CIL通用中间语言吗??
- @Gibbok C编译器将您的程序转换为内部语言(IL)表示,即.NET虚拟机的二进制代码。这个链接上的答案有详细信息。
- 再次感谢!
最终没有区别。
string是System.String的别名(意思是字面上相同),当您键入"string"时,编译器会在编译时将其更改为"system.string"。
现在,System.String.Empty定义为:
1
| public static readonly string Empty =""; |
所以这只是一个方便的明确表示你想使用空字符串的方法,而不是可能是打字错误的""。
- 我个人更喜欢代码中的常量,比如Empty,而不是一堆string s ="";。