字符串与字符串

在C#中有String对象和string对象。

两者有什么区别? 有关使用哪种方法的最佳做法是什么?

没有区别。 string(小写)只是System.String的别名。

没有不同。 System.Stringstring完全相同。 常见的C#编码指南表明您应该使用关键字string

它们是别名并且可以互换。 但是,在风格上,对于声明,我使用小写字符串,对于静态方法,我使用String。

 string foo = "bar"; if( foo != String.Empty ) { Console.WriteLine(String.Format("foo.Length = {0}", foo.Length)); } 

一个是System.String .Net Type,另一个是C#特有的,后者是一个返回System.String的别名。

http://msdn.microsoft.com/en-us/library/362314fe(VS.71).aspx

没有区别。 string是编译器转换为System.String的别名。

事实上,它甚至在MSIL中有别名:

 .method private hidebysig static void Main(string[] args) cil managed 

它们之间没有区别。 string只是System.String的别名。 编译时,它们都被编译为System.String对象。

小写版本只是实际类String的别名。 就IL产生而言,没有真正的区别。

将来,尝试编译使用两者的应用程序,然后使用Reflector(将语言更改为IL)来查看已编译的输出。 你会发现没有区别。

没有区别,因为编译器将字符串转换为System.String。 与所有常见类型相同(int转到System.Int32等)。 我们使用简单的名称,因此它们脱颖而出。

没有区别。 string是一个C#语言关键字,它引用类System.String,就像int是一个引用System.Int32的关键字一样。

考虑到某些语言中的“int”是不同的,取决于16位/ 32位系统,“字符串”在未来可能演变为与System.String不同。

但就目前而言。

请注意:string / String不是唯一的别名:例如。 Integer,Int32,int都是别名。

@mliesen:它不会在C#中发生,它不像C.这是因为从C#开始,你不会创建可执行文件,而是像java一样编译每个编译代码。