字符串与字符串
在Cthere中有"字符串"对象和"字符串"对象。
两者有什么区别?
关于使用哪种最佳实践是什么?
解决方案
没有区别。字符串(小写)只是System.String的别名。
没有区别。 string是编译器转换为System.String的别名。
实际上,它甚至在MSIL中是别名:
.method private hidebysig static void Main(string[] args) cil managed
它们之间没有区别。字符串只是System.String的别名。编译时,它们都被编译为System.String对象。
小写版本仅是实际类String的别名。就生成的IL而言,没有真正的区别。
它们是别名,可以互换。但是,从样式上来说,对于声明,我使用小写的字符串,对于静态方法,我使用String。
string foo = "bar"; if( foo != String.Empty ) { Console.WriteLine(String.Format("foo.Length = {0}", foo.Length)); }
没什么区别,因为编译器将字符串转换为System.String。与所有常见类型相同(int进入System.Int32,等等)。我们使用简单的名称,使它们脱颖而出。
没有不同。 System.String与String严格相同。通用编码准则指出我们应使用关键字"字符串"。
一种是.Net类型的System.String,另一种是C特有的,它原来是System.String的别名。
http://msdn.microsoft.com/zh-CN/library/362314fe(VS.71).aspx
没有区别。 string是一个Clanguage关键字,它引用类System.String,就像int是一个关键字,它引用System.Int32一样。
将来,请尝试编译同时使用两者的应用程序,然后使用Reflector(将语言更改为IL)查看已编译的输出。我们会看到没有区别。
考虑到int在某些语言中取决于16bit / 32bit系统是不同的,将来"字符串"可能会演变为与System.String不同。
但是现在是。
请注意:
字符串/字符串不是唯一的两个别名:
例如。 Integer,Int32,int都是别名。
@mliesen:这在C#中没有发生,这与C语言不同。这是因为Cyou不会创建可执行文件,而是像Java这样按编译的代码。