为什么字符串和对象的别名是小写的?

下面是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#中没有什么是原始的。