字符串与字符串

时间:2008-09-22 18:14:54

标签: c# .net string declaration

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

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

12 个答案:

答案 0 :(得分:33)

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

答案 1 :(得分:15)

没有区别。 System.Stringstring完全相同。常见的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。