任何人都可以给我一个很好的理由在代码中使用CLR类型名称而不是C#类型名称(别名)(作为一般做法)?

我们的开发团队正在进行一场战斗。 我很想听听其他人对此的看法。

在实际代码中? 不,除非你有很多人在熟悉.NET但不熟悉C#的代码上工作。

在会员名称? 绝对。 例如,假设Convert.ToSingle被称为Convert.ToFloat – 这对于F#开发人员来说是完全混乱的,对于他们来说,“ float ”意味着“64位浮点”。

我的一般规则是实现的C#别名,成员名称的CLR类型。

如果你想找到一些支持在任何地方使用CLR类型名称的参数,Jeff Richter建议在“CLR via C#”中使用。 (如果你还没有得到它,无论如何都要买一本 – 这是一本很棒的书。)我不同意他提出的论点,但无论如何都有一些。

我通常在声明变量时使用C#别名,但是静态成员的CLR类型。 我想我只是喜欢它提供的视觉区别。

有趣的是: 编译器不允许您使用“Int32”键入枚举,但是当您使用“int”时它会执行。

(虽然这不是一个特别强烈的原因)我更喜欢类型名称而不是别名因为IntelliSense标准着色。

由于C#和Visual Basic.NET开发人员的混合,我以前的开发团队采用了这种做法。 决定CLR类型将使C#和VB.NET人员更容易进行通信。

我认为,总是使用CLR类型名称几乎唯一有意义的是混合语言商店。 另一种可能性是,如果您计划在不久的将来从当前语言切换到另一种语言。 在那种情况下,我会使用CLR类型名称。

除此之外,选择一种方法而不是另一种方法确实没有强烈的动机。 以这种或那种方式达成共识并确保每个人都遵循“标准”更为重要。

我认为在调用静态类型成员方法时始终使用CLR类型名称是有意义的,因为无论如何你必须在枚举上这样做。 因此,对于声明,请使用C#类型名称,但在调用静态成员时,请使用CLR类型。 这使得它更容易阅读和更一致的imho。 既然,你不能写:

 MyEnum value = enum.Parse(typeof(MyEnum), "value"); 

哪个更适合:

 int i = int.Parse("1"); long l = long.parse("1"); 

你宁愿写:

 int i = Int32.Parse("1"); long l = Int64.Parse("1"); MyEnum value = Enum.Parse(typeof(MyEnum), "value"); 

不。 我不能。 在我看来,别名是有用的:)