c#:String和string

本问题已经有最佳答案,请猛点这里访问。

c#中有String对象和string对象。

两者有什么区别?使用哪一种方法的最佳实践是什么?


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


没有区别。System.Stringstring完全相同。常见的c#编码准则表明您应该使用关键字string


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

1
2
3
4
5
6
string foo ="bar";

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

一个是系统。. net类型,其中一个是特定于c#的,c#是System.String的别名。

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


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

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

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

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


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


它们之间没有区别。string只是System.String的别名。当编译时,它们都被编译到系统中。字符串对象。


考虑到"int"在某些语言中是不同的,这取决于16位/32位系统,因此"string"将来可能演变为与system . string不同的类型。

但目前确实如此。


没有区别。string是一个c#语言关键字,它引用类系统。字符串,就像int是一个关键字,它引用System.Int32。


没有区别,因为字符串被转换成System。编译器的字符串。所有常见类型都是一样的(int进入System)。Int32,等等)。我们使用简单的名字,所以他们脱颖而出。


请注意:string/ string不是唯一的两个别名:如。整数、Int32、int都是别名。

@mliesen:在c#中不会发生这种情况,它不像C。这是因为从c#中,您不创建可执行的代码,而是像java那样创建每编译一次的代码。