【基元类型推荐】
推荐直接使用 FCL 类型。
【理由】
- 编码时不至于困惑string与String的使用。由于C#的stirng(一个关键字)直接映射到System.String(一个 FCL 类型),所以两者没有区别,都可以使用。不至于困惑int在32位操系统和64位操作系统上代表的整数不同。 有的开发人员认为int在32位操作系统上运行时,代表32位整数;而在64位操作系统上运行时,代表64位整数,这个观点完全错误。在C# 中,int 始终映射到System.Int32,所以不管在什么操作系统上运行,代表的都是32位整数。如果程序员习惯了再代码中使用Int32,像这 样的无解就不会产生了。
- C#中的关键字代表的意义在其他的语言中不一定成立。在C#中,long映 射到System.Int64,但在其他编程语言中,long可能就映射到Int16或Int32.例如,C++/CLI 就将long视为一个 Int32.习惯于用一种语言写程序的人在看到用另一种语言写的源代码时,很容易错误地理解代码的意图。事实上,大多数语言甚至不将long看作是一个关 键字,根本不会编译使用了它的代码。
- 代码一目了然,含义清晰。 FCL 的许多方法都将类型名称作为方法名的一部分。例如:BinaryReader类型提供的方法包括 ReadBoolean,ReadInt32,ReadSingle等;而System.Convert类型提供的方法包括 ToBoolean,ToInt32,ToSingle等。以下代码虽然语法没有问题,但包含float的那一行显得颇不自然,无法一下子判断该行的正确性:
BinaryReader br = ner BinaryReader(...); float var0 = br.ReadSingle();//正确,但不自然 Single var1 = br.ReadSingle();//正确,而且一目了然
- 了解其他语言也可以面向CLR。 平时只用C#的许多程序员逐渐忘了还可以用其他语言写面向CLR的代码。因此,“C#主义”逐渐入侵类库代码。例如,Microsoft的FCL几乎是完 全用C#写的,FCL团队的开发人员现在向库中引入了像Array的GetLongLength这样的方法。该方法返回一个Int64值。这种值在C#中 是long,但在其他语言中不是(C++/CLI)。另一个例子是System.Linq.Enumerable的LongCount方法。
时间: 2024-10-09 11:08:02