这两者之间有什么区别,我应该使用哪一个?

string s = "Hello world!";
String s = "Hello world!";

当前回答

它已被覆盖; 但是,你不能在反射中使用线条; 你必须使用线条。

其他回答

表示带变量与带,但在访问其静态成员之一时使用带类:

String.Format()

变量

string name = "";

字符串是保留的单词,但字符串只是一个类名称,这意味着字符串本身不能作为变量名称使用。

如果出于某种原因,你想要一个变量称为字符串,你只会看到这些编辑中的第一个:

StringBuilder String = new StringBuilder();  // compiles
StringBuilder string = new StringBuilder();  // doesn't compile 

如果你真的想要一个变量名称,称为字符串,你可以使用 @ 作为预定:

StringBuilder @string = new StringBuilder();

另一个关键差异:Stack Overflow以不同的方式突出它们。

但从编码指南的观点,最好使用字符串而不是字符串,这就是开发人员通常使用的。 例如,而不是使用 Int32 我们使用 int 作为 int 是 alias 到 Int32

FYI “关键字行仅仅是预先定义的类 System.String 的名称” - C# 语言规格 4.2.3 http://msdn2.microsoft.com/En-US/library/aa691153.aspx

是的,这不是他们之间的区别,就像博尔和布莱恩一样。

它已被覆盖; 但是,你不能在反射中使用线条; 你必须使用线条。