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

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

当前回答

关于这个问题的引用来自丹尼尔·索里斯的书。

所有预先定义的类型都是直接地图到底部的.NET 类型. C# 类型名称(string)只是对.NET 类型(String 或 System.String)的联盟,所以使用.NET 名称工作顺利,尽管这不受鼓励。

其他回答

这是一个协议问题,真的. 字符串只是看起来更像C/C++风格. 通用协议是使用你所选择的语言提供的任何缩写(int/Int为Int32)。 这也适用于“对象”和十数。

理论上,这可能有助于将代码转移到某些未来的64位标准,其中“int”可能意味着Int64,但这不是问题,我会期望任何升级巫师将改变任何int引用到Int32无论如何只是安全。

您不需要进口名称空间(使用系统;)来使用字符串,因为它是一个全球的名称 System.String。

要了解更多关于 Alias 的信息,您可以查看此链接。

至少有四种差异:

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

2、你不能使用 String 而不“使用系统”。所以你用“string”写得更少。

3、“String”比“string”更好地命名公约,因为它是一种不变的类型。

“String”是大多数编辑器中突出的C#关键字和合成,但不是“String”。

有一个实用的区别在线和线之间。

nameof(String); // compiles
nameof(string); // doesn't compile

這是因為字符串是一個關鍵字(在這種情況下,一個名稱),而字符串是一個類型。

同样的情况也适用于其他联盟。

| Alias     | Type             |
|-----------|------------------|
|  bool     |  System.Boolean  |
|  byte     |  System.Byte     |
|  sbyte    |  System.SByte    |
|  char     |  System.Char     |
|  decimal  |  System.Decimal  |
|  double   |  System.Double   |
|  float    |  System.Single   |
|  int      |  System.Int32    |
|  uint     |  System.UInt32   |
|  long     |  System.Int64    |
|  ulong    |  System.UInt64   |
|  object   |  System.Object   |
|  short    |  System.Int16    |
|  ushort   |  System.UInt16   |
|  string   |  System.String   |

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

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

参考。