为什么字符串和对象的别名是小写的?
Why are the aliases for string and object in lowercase?
这是 C# 中的别名列表(What is the difference between String and string in C#? 的赞美):
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
我可以看到 bool
通过 char
是小写别名,因为它们是原始类型。
为什么对象和字符串不大写,因为它们是复杂类型?这是开发人员的疏忽,还是有必要将它们小写?或者这是一个自以为是的问题?
你最终得到的是 string.Format()
而不是 String.Format()
,这看起来很时髦,让我觉得 string
是一个变量。
因为所有keywords(保留标识符)都是小写的。
在C#中,没有"primitive types"和"complex types"。其中有 class
es and struct
s、(分别是引用类型和值类型)。两者都可以包含方法(例如 char.IsDigit('a')
)。所以你的反对意见并不是真的有效。但是还有一个问题:为什么?
我不确定这是否有好的来源,但我认为小写别名是为了匹配 other C# keywords,它们本身以 C/C++ 关键字为模型。
答案很简单。如果你想像 class 一样使用它,请使用 String
,如果你想像关键字一样使用它,请使用 string
。开发人员想让我们感觉我们正在使用原始类型。因为在 C# 中没有什么是原始的。
关于您最后的评论:
You end up with things like string.Format()
instead of String.Format()
, which just look funky and make me think string is a variable.
对于 C# 6,这成为一个有实际意义的问题,您可以这样做:
using static System.String;
...
var x = Format(...);
或者更进一步,您可以完全取消 string.Format
并改用 $
。
这是 C# 中的别名列表(What is the difference between String and string in C#? 的赞美):
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
我可以看到 bool
通过 char
是小写别名,因为它们是原始类型。
为什么对象和字符串不大写,因为它们是复杂类型?这是开发人员的疏忽,还是有必要将它们小写?或者这是一个自以为是的问题?
你最终得到的是 string.Format()
而不是 String.Format()
,这看起来很时髦,让我觉得 string
是一个变量。
因为所有keywords(保留标识符)都是小写的。
在C#中,没有"primitive types"和"complex types"。其中有 class
es and struct
s、(分别是引用类型和值类型)。两者都可以包含方法(例如 char.IsDigit('a')
)。所以你的反对意见并不是真的有效。但是还有一个问题:为什么?
我不确定这是否有好的来源,但我认为小写别名是为了匹配 other C# keywords,它们本身以 C/C++ 关键字为模型。
答案很简单。如果你想像 class 一样使用它,请使用 String
,如果你想像关键字一样使用它,请使用 string
。开发人员想让我们感觉我们正在使用原始类型。因为在 C# 中没有什么是原始的。
关于您最后的评论:
You end up with things like
string.Format()
instead ofString.Format()
, which just look funky and make me think string is a variable.
对于 C# 6,这成为一个有实际意义的问题,您可以这样做:
using static System.String;
...
var x = Format(...);
或者更进一步,您可以完全取消 string.Format
并改用 $
。