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

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

当前回答

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

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

其他回答

在 C# 中,线和线之间没有重大区别。

String 是系统名称空间中的.NET 框架中的一个类,完全合格的名称是 System.String。

但是,它建议使用字符串,同时声明变量如:

string str = "Hello";

我们可以使用 String 同时使用任何内置方法为 String.IsNullOrEmpty(等线条。

此外,这两者之间的区别就像在使用 String 之前,我们必须在 CS 文件中输入系统名称空间,并且可以直接使用 String。

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

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

我只是想把这个添加到Lfousts的答案,从Ritchers的书:

C# 语言规格说:“在风格问题上,使用关键字优于使用完整的系统类型名称。我不同意语言规格;我更喜欢使用 FCL 类型名称,完全避免原始类型名称。

我没有得到他的意见,直到我阅读完整的段落。

string 只是 System.String 的标志,编辑器将以相同的方式处理它们。

唯一的实用差异是你提到的合成突出,如果你使用String,你必须使用系统写作。

最好的答案我曾经听说过关于使用提供的类型联盟在C#来自Jeffrey Richter在他的书CLR Via C#。

我已经看到一些开发人员混淆,不知道是否使用线条或线条在他们的代码. 因为在C#的线条(一个关键字)地图准确到System.String(一个FCL类型),没有区别,也可以使用。 在C#,长地图到System.Int64,但在不同的编程语言,很长时间可以地图到Int16或Int32. 事实上,C++/CLI实际上处理很长时间作为Int32. S

BinaryReader br = new BinaryReader(...);
float val  = br.ReadSingle(); // OK, but feels unnatural
Single val = br.ReadSingle(); // OK and feels good

所以你有它,我认为这些都是很好的点,但是,我找不到自己在自己的代码中使用杰弗里的建议,也许我太困在我的C#世界里,但我最终试图让我的代码看起来像框架代码。