【发布时间】:2010-09-12 02:31:15
【问题描述】:
在 C# 中有 String 对象和 string 对象。
两者有什么区别? 关于使用的最佳做法是什么?
【问题讨论】:
标签: c# .net string declaration
在 C# 中有 String 对象和 string 对象。
两者有什么区别? 关于使用的最佳做法是什么?
【问题讨论】:
标签: c# .net string declaration
没有区别。 string(小写)只是 System.String 的别名。
【讨论】:
没有区别。 string 是编译器转换为 System.String 的别名。
事实上,它甚至在 MSIL 中有别名:
.method private hidebysig static void Main(string[] args) cil managed
【讨论】:
它们之间没有区别。 string 只是 System.String 的别名。编译时,它们都被编译为 System.String 对象。
【讨论】:
小写版本只是实际类 String 的别名。就 IL 生成而言,没有真正的区别。
【讨论】:
它们是别名并且可以互换。但是,在风格上,对于声明,我使用小写字符串,对于静态方法,我使用 String。
string foo = "bar";
if( foo != String.Empty )
{
Console.WriteLine(String.Format("foo.Length = {0}", foo.Length));
}
【讨论】:
没有区别,因为 string 被编译器转换为 System.String。与所有常见类型相同(int 转到 System.Int32 等)。我们使用简单的名称,以便它们脱颖而出。
【讨论】:
没有区别。 System.String 与string 完全相同。常见的 C# 编码准则表明您应该使用关键字 string。
【讨论】:
一个是 System.String 的 .Net 类型,一个是特定于 C# 的,结果是 System.String 的别名。
http://msdn.microsoft.com/en-us/library/362314fe(VS.71).aspx
【讨论】:
没有区别。 string 是 C# 语言的关键字,它指代 System.String 类,就像 int 是一个关键字,它指代 System.Int32。
【讨论】:
以后,尝试编译一个同时使用两者的应用程序,然后使用 Reflector(将语言更改为 IL)查看编译后的输出。你会发现没有区别。
【讨论】:
考虑到“int”在某些语言中因 16 位/32 位系统而异,“字符串”将来可能会演变为与 System.String 不同。
但现在是。
【讨论】:
请注意: string/String 不是唯一的几个别名: 例如。 Integer,Int32,int都是别名。
@mliesen:它不会在 C# 中发生,它不像 C。这是因为在 C# 中,您不会创建可执行文件,而是创建每个编译的代码,如 java。
【讨论】: