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

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

当前回答

string 是.NET 框架中的 String 的标志。

在哪里“String”实际上是 System.String。

我会说它们是可交换的,没有区别什么时候和在哪里你应该使用一个或另一个。

最好是和你所使用的相一致。

对于什么是值得的,我使用链来宣布类型 - 变量,属性,回报值和参数. 这与其他系统类型的使用一致 - int, bool, var 等(尽管 Int32 和 Boolean 也是正确的)。

我使用 String 在 String 类上使用静态方法,如 String.Split() 或 String.IsNullOrEmpty()。我觉得这更有意义,因为方法属于一个类,并且与我使用其他静态方法一致。

其他回答

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

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

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

StyleCop 规则,默认情况下,将允许您使用字符串作为一个 C# 代码风格的最佳实践,除非提到 System.String 静态功能,如 String.Format, String.Join, String.Concat 等。

在一个优化CIL(是MSIL)背景(.NET VM 组合语言)中的其他语言 -.NET 框架或 Mono 或任何 CIL 类型的区域在一本针对多个.NET 语言(如 VB.NET、 F# 等)的书中。

因此,真正的答案是,仅仅是因为C#必须与其他语言共享.NET 空间,这个问题甚至存在。

C、总结...

对于您的内部组织,如果您也使用 VB.NET 或 F# 或任何其他.NET 语言,或者开发图书馆用于客户的消费,那么您应该在这些背景下使用“Frameworky”类型,以便每个人都能理解您的界面,无论您是谁。

HTH。

首先,两个字符串和字符串都不是相同的,有一个区别:字符串不是一个关键字,它可以用作识别器,而字符串是关键字,不能用作识别器。

我试图用不同的例子来解释: 首先,当我把字符串 s 放进 Visual Studio 并将它转移到我获得(没有颜色):

文档位于 https://msdn.microsoft.com/en-us/library/362314fe.aspx. 第二个句子说“string 是.NET 框架中的 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   |