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

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

当前回答

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

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

其他回答

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

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

文档位于 https://msdn.microsoft.com/en-us/library/362314fe.aspx. 第二个句子说“string 是.NET 框架中的 String 的标志。

字符串是 System.String 的缩短,唯一的区别是,你不需要提到 System.String 名称空间,所以比 String 更好地使用字符串。

有一个区别 - 您不能使用 String 没有使用系统; 提前。

只是为了完整性,这里是一个与相关信息的脑跳动......

正如其他人指出的那样, string 是 System.String 的 alias. 假设使用 String 编译到 System.String 的代码(即您没有使用某些不同的 String 类型的其他名称空间的指令),它们编译到相同的代码,所以在执行时间没有任何差异。

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

在特征中,值类型联盟被称为“简单类型”。字母可以用于每个简单类型的恒定的值;没有其他值类型有字母形式可用。

有一個情況,你必須使用連結:當明確指定一個 enum 的基礎類型。

public enum Foo : UInt32 {} // Invalid
public enum Bar : uint   {} // Valid

这只是一个问题,规格如何定义enum声明 - 结尾后的一部分必须是整体类型的生产,这是一个标志的sbyte, byte, short, ushort, int, uint, long, ulong, char......相反的类型的生产,用于变量声明,例如,它不表明任何其他差异。

两者都是相同的,区别在于你如何使用它。

字符串为变量

String 是为了召唤其他 String 类方法

如:

string fName = "John";
string lName = "Smith";

string fullName = String.Concat(fName,lName);

if (String.IsNullOrEmpty(fName))
{
  Console.WriteLine("Enter first name");
}