这两者之间有什么区别,我应该使用哪一个?
string s = "Hello world!";
String s = "Hello world!";
这两者之间有什么区别,我应该使用哪一个?
string s = "Hello world!";
String s = "Hello world!";
当前回答
@JaredPar(C#编辑器的开发者和繁荣的SO用户!)写了一篇关于这个问题的博客文章,我认为值得分享。
string vs. string 不是风格辩论
[...]
识别器 String 虽然没有具体的含义在 C#. 它是一个识别器,通过所有的名称搜索规则,如 Widget, 学生, 等... 它可以连接到链条或它可以连接到一个类型在另一个组合,其目的可能完全不同于链条. 更糟糕的是,它可以定义的方式,这样的代码,如 String s = “你好”; 继续编译。
[...]
所以请记住,当你看到 String vs. String 讨论时,这就是关于语法,而不是风格。 选择 String 会给你的代码基础带来微妙的意义. 选择 String 不是错误的,但它会让未来惊喜的门开放。
其他回答
坦率地说,在实践中通常没有System.String和 string之间的区别。
所有类型在 C# 是对象,所有衍生于 System.Object 类. 一个区别是,字符串是一个 C# 关键字,字符串可以用作变量名称. System.String 是这个类型的常规.NET 名称,字符串是方便的 C# 名称. 这里是一个简单的程序,显示 System.String 和字符串之间的区别。
string a = new string(new char[] { 'x', 'y', 'z' });
string b = new String(new char[] { 'x', 'y', 'z' });
String c = new string(new char[] { 'x', 'y', 'z' });
String d = new String(new char[] { 'x', 'y', 'z' });
MessageBox.Show((a.GetType() == typeof(String) && a.GetType() == typeof(string)).ToString()); // shows true
MessageBox.Show((b.GetType() == typeof(String) && b.GetType() == typeof(string)).ToString()); // shows true
MessageBox.Show((c.GetType() == typeof(String) && c.GetType() == typeof(string)).ToString()); // shows true
MessageBox.Show((d.GetType() == typeof(String) && d.GetType() == typeof(string)).ToString()); // shows true
@JonSkeet 在我的编辑器中
public enum Foo : UInt32 { }
我是Visual Studio 2015社区。
字符串是关键词,你不能用字符串作为识别器。
条纹不是一个关键词,你可以用它作为一个标识:
例子
string String = "I am a string";
关键词行是 System.String 与关键词问题相同的标志,两者都是相同的。
typeof(string) == typeof(String) == typeof(System.String)
在 C# 中, string 是 System.String (String) 的短手版本,它们基本上是相同的。
它就像博尔和布莱恩,没有太大的区别。
C# 是与 CLR 一起使用的语言。
字符串是 C# 的类型。
System.String 是 CLR 中的一种类型。
当您使用 C# 与 CLR 行一起时,将被地图到 System.String。
理论上,你可以实施一个C#编译器,产生Java bytecode. 这个编译器的敏感实施可能将地图链到java.lang.String,以便与Java运行时间图书馆互动。
.NET 类型与其他对象类型相同的颜色(值类型是合适的对象,毕竟)。
条件和控制的关键词(如如果,交换和返回)是下层和彩色黑蓝色(默认情况下)。
考虑一下:
String someString;
string anotherString;