【问题标题】:Why does C# prefer type alias instead of type name? [closed]为什么 C# 更喜欢类型别名而不是类型名称? [关闭]
【发布时间】:2020-07-21 12:34:23
【问题描述】:

在 2001-2002 年创建 .NET 时,他们创建了 .NET 类型(String、Int64、Boolean)并创建了类型别名(string、long、bool)。 微软这样做的官方原因是为了吸引和帮助 c/c++ 程序员过渡到新的 C#。 我之所以记得这一点,是因为当他们宣布 .NET 并解释这些类型时,我在场。

所以 20 年后,.NET 仍然更喜欢别名,即使我指定了名称类型。 例如,如果我写 List<Tuple<String,DateTime,Int64>> l = new,这将自动完成到 List<Tuple<string, DateTime, long>>()

List<Tuple<String,DateTime,Int64>> l = new List<Tuple<string, DateTime, long>>()

有这种偏好的原因吗? Color Coding 概念怎么了?

【问题讨论】:

  • “微软这样做的官方原因是为了吸引和帮助 c/c++ 程序员过渡到新的 C#。” - 你对此有引用吗?
  • @Dai 不,我是这篇声明的作者。他们实际上是在宣布 .NET 时在舞台上说的。
  • @Dai 我记得这一点,因为当时在听众中我对自己说:这是多么愚蠢的事情,因为类型名称 int 与 Int32 不会导致 c++ 开发人员从编程语言。我对么?谁能说我错了?
  • Is there a reason for this preference? 有两个选项。他们需要选择一个。他们选择了最安全的一个(因为您可以定义自己的 String 类并因此引起意外,但您不能摆弄 string 关键字)。

标签: c# .net types


【解决方案1】:

它现在是 IDE 偏好(自 VS2008 IIRC 以来一直存在)。如果您将 C# 文本编辑器设置更改为更喜欢“框架类型名称”而不是“预定义类型”(C# 的内置别名),那么它将在生成或重新格式化代码时使用完整的类型名称。

但是,它的覆盖范围存在很多错误和差距 - 我自己更喜欢使用类型名称,并且在某些情况下 IDE 仍会使用别名。 YMMV。

至于“为什么?”...

微软这样做的官方原因是为了吸引和帮助 c/c++ 程序员过渡到新的 C#。

我不能说我听说过或看到过这个(但也没有听到反驳或否认)。我认为这只是 C# 从使用 C 风格的语法继承而来的东西(就像 Java 和 Swift 也有相同的关键字一样)。

请注意,与 Visual Basic 不同,C# 没有隐式导入,因此如果您想分别使用 Int32String 而不是 intstring,那么您需要在其中添加 using System;每个文件。有些人就是不想这样做。

【讨论】:

  • @realPro 同样的设置也可以在.editorConfig中设置
猜你喜欢
  • 1970-01-01
  • 2013-09-18
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多