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

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

当前回答

C# 是与 CLR 一起使用的语言。

字符串是 C# 的类型。

System.String 是 CLR 中的一种类型。

当您使用 C# 与 CLR 行一起时,将被地图到 System.String。

理论上,你可以实施一个C#编译器,产生Java bytecode. 这个编译器的敏感实施可能将地图链到java.lang.String,以便与Java运行时间图书馆互动。

其他回答

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

System.String 是.NET 字符串类 - 在 C# 字符串中,它是 System.String 的标志 - 所以在使用中,它们是相同的。

至于指南,我不会过于沉默,只是使用你喜欢的东西 - 生活中有更多的重要事物,代码将是相同的,无论如何。

如果你找到自己的建造系统,需要指定你正在使用的整合器的尺寸,因此倾向于使用 Int16, Int32, UInt16, UInt32 等,那么它可能看起来更自然地使用 String - 并且在不同的.net 语言之间移动时,它可能会使事情更容易理解 - 否则我会使用 String 和 int。

使用系统类型使您更容易在 C# 和 VB.Net 之间端口,如果您进入这种类型的东西。

另一个没有提到的论点,最好是复活节案例:

System.String 是参考类型,参考类型名称是经典案例。

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

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

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

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

StringBuilder @string = new StringBuilder();

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