答案 0 :(得分:4)
string
是实际类System.String
的C#语言别名。
您可以放心使用。我见过大多数人更喜欢string
。如果我正在使用API,我通常会使用System.String
,但两者都是安全的。
还有很多其他别名。例如,int
是System.Int32
的别名,bool
的{{1}}。字符串示例恰好是一个套管差异所以这个问题出现了很多。
答案 1 :(得分:4)
string
是System.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
最好的答案来自杰弗里里希特在他的书CLR Via C#中。以下是他的3个理由:
我看到很多开发人员感到困惑,不知道是否 在代码中使用字符串或字符串。因为在C#中的字符串(a 关键字)完全映射到System.String(一个FCL类型),没有 差异和任何一个都可以使用。
在C#中,长映射到System.Int64,但是在不同的编程中 语言,long可以映射到Int16或Int32。实际上,C ++ / CLI可以 实际上长期作为Int32。有人在一个人中阅读源代码 语言很容易误解代码的意图,如果他或她 习惯于用不同的编程语言编程。事实上, 大多数语言甚至不会将long视为关键字,也不会编译 使用它的代码。
FCL有很多方法都有类型名称作为其一部分 方法名称。例如,BinaryReader类型提供方法 例如ReadBoolean,ReadInt32,ReadSingle等,以及 System.Convert类型提供ToBoolean,ToInt32等方法, ToSingle,等等。
答案 2 :(得分:0)
实际上,字符串只有一个关键字(所有C#关键字都是小写)。他们的意思是一样的。但是,如果您有using System;
导入,它们只能互换。
答案 3 :(得分:0)
String
是您正在使用的实际课程。它只是另一个类,仅此而已。但是,由于字符串在编程中非常重要,因此Microsoft决定通过创建仅为string
的别名的关键字System.String
将其烘焙到该语言中。没有string
的实例,因为它不是一个类。
这使得字符串提升状态并使它们更容易找到(想象一下尝试编写一个hello world style编程并且必须实际查看并找到String类...):D