C# 字符串vs字符串

C# 字符串vs字符串,c#,.net,string,declaration,C#,.net,String,Declaration,在C#中有String对象和String对象 这两者的区别是什么? 使用哪种方法的最佳实践是什么?没有区别。string(小写)只是System.string的别名。没有区别。string是编译器转换为System.string的别名 事实上,它甚至在MSIL中有别名: .method private hidebysig static void Main(string[] args) cil managed 他们之间没有区别。string只是System.string的别名。编译时,它们都被

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

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

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

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

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

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

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

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

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

string foo = "bar";

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

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

没有区别
System.String
String
完全相同。常见的C#编码准则指出,您应该使用关键字
string

一个是System.Net字符串类型,另一个是特定于C#的,这是返回System.string的别名


没有区别。string是指类System的C#语言关键字。string就像int是指System.Int32的关键字一样。

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

考虑到“int”在某些语言中根据16位/32位系统的不同而有所不同,“string”将来可能会演变为与system.string不同

但现在是这样。

请注意: 字符串/字符串不是唯一的两个别名: Integer、Int32、int都是别名

@姆利森:这在C#中不会发生,它不像C。这是因为在C#中,您不创建可执行文件,而是创建每个编译代码,如java