在C#中有String
个对象和string
个对象。
两者有什么区别? 有关使用哪种方法的最佳做法是什么?
答案 0 :(得分:33)
没有区别。 string(小写)只是System.String的别名。
答案 1 :(得分:15)
没有区别。 System.String
与string
完全相同。常见的C#编码指南表明您应该使用关键字string
。
答案 2 :(得分:10)
它们是别名并且可以互换。但是,在风格上,对于声明,我使用的是小写字符串,对于静态方法,我使用String。
string foo = "bar";
if( foo != String.Empty )
{
Console.WriteLine(String.Format("foo.Length = {0}", foo.Length));
}
答案 3 :(得分:3)
没有区别。 string是编译器转换为System.String的别名。
事实上,它甚至在MSIL中出现了别名:
.method private hidebysig static void Main(string[] args) cil managed
答案 4 :(得分:3)
一个是System.String .Net Type,一个是特定于C#的,后者原来是一个返回System.String的别名。
http://msdn.microsoft.com/en-us/library/362314fe(VS.71).aspx
答案 5 :(得分:2)
它们之间没有区别。 string只是System.String的别名。编译时,它们都被编译为System.String对象。
答案 6 :(得分:2)
小写版本只是实际类String的别名。就IL产生而言,没有真正的区别。
答案 7 :(得分:2)
将来,尝试编译使用两者的应用程序,然后使用Reflector(将语言更改为IL)来查看已编译的输出。你会发现没有区别。
答案 8 :(得分:1)
没有区别,因为编译器将字符串转换为System.String。与所有常见类型相同(int转到System.Int32等)。我们使用简单的名称,以便脱颖而出。
答案 9 :(得分:1)
没有区别。 string是一个C#语言关键字,它引用类System.String,就像int是一个引用System.Int32的关键字一样。
答案 10 :(得分:1)
考虑到某些语言中“int”的不同取决于16bit / 32bit系统,“字符串”在未来可能演变为与System.String不同。
但现在是。
答案 11 :(得分:0)
稍微注意一下: string / String不是唯一的别名: 例如。 Integer,Int32,int都是别名。
@mliesen:它不会发生在C#中,它不像C.这是因为从C#开始,你不创建可执行文件,而是创建一个每个编译的代码,如java。