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

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

当前回答

两者之间没有区别,您可以在代码中使用其中一个。

System.String 是一个类(参考类型)定义的 mscorlib 在名空间系统. 换句话说, System.String 是 CLR 的类型。

string 是 C# 的关键词

其他回答

在 MSDN 文档的背景下, String 类像任何其他数据类型(例如 XmlReader、StreamReader)一样在 BCL 中文档。

字符串被记录为一个关键字(C#参考)或任何基本的C#语言构造(例如,为,同时,默认)。

参考。

字符串是一种序列的字符集,用于代表文本。

序列对象是代表序列的 System.Char 对象的序列集,而 System.Char 对象与 UTF-16 代码单位相匹配。

String 对象的值是 System.Char 对象的序列收藏的内容,这个值是不可改变的(即它仅是阅读的)。

有关线条不变性的更多信息,请参见MSDN中的不变性和StringBuilder类部分。

内存中的 String 对象的最大尺寸为 2GB 或大约 1 亿个字符。

注意 : 答案是从 msdn 帮助部分提取的. 在 msdn String Class 主题中,您可以在此处查看完整内容。

最好的答案我曾经听说过关于使用提供的类型联盟在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#世界里,但我最终试图让我的代码看起来像框架代码。

String(System.String)是基类图书馆的一个类。 string(下一个案例)是C#的备份工作,这是System.String的标志。 Int32 vs int是一种类似的情况,如Boolean vs. bool. 这些C#语言特定的关键词允许您以类似于C的风格宣布原始性。

string 是 System.String 的 C# 中的一个 alias. 所以技术上,没有区别. 它就像 int vs. System.Int32.

至于指导方针,一般建议在您提到对象时使用字符串。

吉。

string place = "world";

同样,我认为一般建议使用 String 如果你需要具体提到课堂。

吉。

string greet = String.Format("Hello {0}!", place);

这是微软在其例子中使用的风格。

似乎该领域的指导方针可能已经改变了,因为StyleCop现在强制使用C#特定的联盟。