在 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 类型,另一种是特定于 C# 的,它原来是 System.String 的别名。
http://msdn.microsoft.com/en-us/library/362314fe(VS.71).aspx
没有区别。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)查看编译后的输出。你会发现没有区别。
没有区别,因为 string 被编译器转换为 System.String 。与所有常见类型相同(int 转到 System.Int32 等)。我们使用简单的名称,以便它们脱颖而出。
考虑到“int”在某些语言中因 16 位/32 位系统而异,“字符串”将来可能会演变为与 System.String 不同。
但就目前而言。
请注意:字符串/字符串不是唯一的几个别名:例如。Integer,Int32, int 都是别名。
@mliesen:它不会在 C# 中发生,它不像 C。这是因为从 C# 你不会创建可执行文件,而是创建每个编译的代码,如 java。