为什么字符串和对象的别名是小写的?
下面是C#中的别名列表(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
我可以通过char
看到bool
是小写别名,因为它们是原始类型。
为什么对象和字符串没有大写,因为它们是复杂的类型? 这是开发人员的疏忽,还是他们必须小写的必要原因? 或者这是一个自以为是的问题?
你最终得到了像string.Format()
而不是String.Format()
,它看起来很时髦,让我觉得string
是一个变量。
在C#中,没有“原始类型”和“复杂类型”。 有class
es和struct
,(分别是引用类型和值类型)等。 两者都可以包括方法(例如char.IsDigit('a')
)。 所以你的异议并不是真的有效。 但仍有一个问题:为什么?
我不确定是否有一个很好的来源,但我认为小写别名是为了匹配其他C#关键字 ,它们本身是在C / C ++关键字上建模的。
因为所有关键字 (保留标识符)都是小写的。
关于你的最后评论:
你最终得到了像
string.Format()
而不是String.Format()
,它看起来很时髦,让我觉得字符串是一个变量。
使用C#6,这可以成为一个有争议的问题:
using static System.String; ... var x = Format(...);
或者更进一步,你可以完全取消string.Format
并使用$
代替。
答案很简单。 如果你想像使用String
一样使用它,如果你想像关键字一样使用它,请使用string
。 开发人员希望让我们觉得我们使用的是原始类型。 因为在C#中没有什么是原始的。