题
在C#中有 String
对象和 string
对象。
两者有什么区别? 有关使用哪种方法的最佳做法是什么?
解决方案
没有区别。 string(小写)只是System.String的别名。
其他提示
没有区别。 System.String
与 string
完全相同。常见的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的别名。
没有区别。 string是编译器转换为System.String的别名。
事实上,它甚至在MSIL中出现了别名:
.method private hidebysig static void Main(string[] args) cil managed
它们之间没有区别。 string只是System.String的别名。编译时,它们都被编译为System.String对象。
小写版本只是实际类String的别名。就IL产生而言,没有真正的区别。
没有区别。 string是一个C#语言关键字,它引用类System.String,就像int是一个引用System.Int32的关键字一样。
将来,尝试编译使用两者的应用程序,然后使用Reflector(将语言更改为IL)来查看已编译的输出。你会发现没有区别。
没有区别,因为编译器将字符串转换为System.String。与所有常见类型相同(int转到System.Int32等)。我们使用简单的名称,以便脱颖而出。
考虑到“ int”在某些语言中,根据16位/ 32位系统,“字符串”是不同的。可能在将来演变为与System.String不同。
但现在是。
稍微注意一下: string / String不是唯一的别名: 例如。 Integer,Int32,int都是别名。
@mliesen:它不会发生在C#中,它不像C.这是因为从C#开始,你不会创建可执行文件,而是像java一样编译每个编译代码。