字符串与字符串

时间:2020-03-06 14:33:16  来源:igfitidea点击:

在Cthere中有"字符串"对象和"字符串"对象。

两者有什么区别?
关于使用哪种最佳实践是什么?

解决方案

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

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

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

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

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

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

它们是别名,可以互换。但是,从样式上来说,对于声明,我使用小写的字符串,对于静态方法,我使用String。

string foo = "bar";

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

没什么区别,因为编译器将字符串转换为System.String。与所有常见类型相同(int进入System.Int32,等等)。我们使用简单的名称,使它们脱颖而出。

没有不同。 System.String与String严格相同。通用编码准则指出我们应使用关键字"字符串"。

一种是.Net类型的System.String,另一种是C特有的,它原来是System.String的别名。

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

没有区别。 string是一个Clanguage关键字,它引用类System.String,就像int是一个关键字,它引用System.Int32一样。

将来,请尝试编译同时使用两者的应用程序,然后使用Reflector(将语言更改为IL)查看已编译的输出。我们会看到没有区别。

考虑到int在某些语言中取决于16bit / 32bit系统是不同的,将来"字符串"可能会演变为与System.String不同。

但是现在是。

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

@mliesen:这在C#中没有发生,这与C语言不同。这是因为Cyou不会创建可执行文件,而是像Java这样按编译的代码。