为什么c#中有两个关键字:String和String
可能重复:为什么c#中有两个关键字:String和String,c#,C#,可能重复: 我看到有两个不同的关键字(classes?),一个以大写字母S开头,另一个以小写字母c#开头 一串一串 原因是什么?一个还不够吗?string是实际类系统的C语言别名。string 你可以安全地使用任何一种。我看到大多数人更喜欢字符串。如果我在使用API,我通常会使用System.String,尽管两者都是安全的 还有很多其他的别名。例如,int是System.Int32的别名,bool是System.Boolean的别名。字符串示例恰好是大小写不同,所以这个问题经常出现。实际上,
我看到有两个不同的关键字(classes?),一个以大写字母S开头,另一个以小写字母c#开头 一串一串 原因是什么?一个还不够吗?
string
是实际类系统的C语言别名。string
你可以安全地使用任何一种。我看到大多数人更喜欢字符串。如果我在使用API,我通常会使用System.String
,尽管两者都是安全的
还有很多其他的别名。例如,int
是System.Int32
的别名,bool
是System.Boolean的别名。字符串示例恰好是大小写不同,所以这个问题经常出现。实际上,字符串只有一个关键字(所有C#关键字都是小写的)。他们的意思是一样的。但是,如果您有使用系统,它们只能互换代码>导入。string
是System.string
类的关键字和别名,System.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
最好的答案来自杰弗里·里希特(Jeffrey Richter)在其著作《CLR Via C#》(CLR Via C#。以下是他的三个理由:
- 我看到许多开发人员困惑不解,不知道是否应该这样做
在代码中使用字符串或字符串。因为在C#中,字符串(a
关键字)完全映射到System.String(FCL类型),没有
可以使用“差异”和“任意一个”
- 在C#中,long映射到System.Int64,但在不同的编程中
语言,long可以映射到Int16或Int32。事实上,C++/CLI确实如此
事实上,将long视为Int32。有人在一本书中阅读源代码
语言很容易误解代码的意图,如果他或她
我们习惯于用不同的编程语言编程。事实上
大多数语言甚至不会将long视为关键字,也不会编译
使用它的代码
- FCL有许多方法,其类型名称是它们的一部分
方法名。例如,BinaryReader类型提供方法
例如ReadBoolean、ReadInt32、ReadSingle等,以及
System.Convert类型提供了ToBoolean、ToInt32、,
托辛格,等等
String
是您正在使用的实际类。这只是另一门课,仅此而已。然而,由于字符串在编程中非常重要,微软决定通过创建一个关键字string
,将其嵌入到语言中,该关键字只是System.string
的别名。没有string
的实例,因为它不是类
这赋予了字符串更高的地位,并使它们更容易找到(想象一下,试图编写一个hello world风格的编程,并且必须实际查找字符串类……):D与int/Int32、bool/Boolean、double/double等相同。许多常见类型被别名为更熟悉的(C/C++)关键字。@Antony Scott:就像BoltClock说的,没有两个。一个只是一个别名<代码>字符串
仅指BCL中的字符串
类定义。