【问题标题】:What's the (official) term for a type's type?类型类型的(官方)术语是什么?
【发布时间】:2012-12-01 17:03:53
【问题描述】:

我正在使用 Roslyn 编写一个应用程序来从语法和语义上分析 C# 源代码。对于正在分析的源代码中定义的每种类型,我想存储它是引用类型(类)、值类型(结构)还是接口。

类型的类型的适当/官方术语是什么?

例子:

class A
{
    //This type's type (A's type) is 'class' (i.e. a reference type).
}

【问题讨论】:

  • Haskell 将这种类型的东西称为“善良”。也许它在 .NET 中是相似的。
  • 不确定是否有包含类、接口、枚举、类型等的集合的官方术语。我将它们称为结构,但会放入脚注/词汇表条目来定义我的使用该术语贯穿整个文档的上下文。
  • 这个问题需要 Jon Skeet :)!
  • 因为我们在讨论语法 id,所以说它是 keyword,关键字的类型是 structuralint 将是 data typepartial => contextual。 @BehnamEsmaili 我在阅读问题时想到了他..:D
  • @Alechandro 我称它为“语法”,因为我的应用程序目前只使用 Roslyn 的语法分析部分,但我想此时它实际上是更多的语义分析......

标签: c# types metadata naming roslyn


【解决方案1】:

如果您想知道官方名称,请查看官方来源:C# 语言规范。从那里引用(§1.3 类型和变量;强调我的):

C#中有两种类型:值类型和引用类型。 […]

C#的值类型又分为简单类型、枚举类型、结构类型和可空类型,C#的引用类型又分为类类型、接口类型、数组类型和委托类型。

然后有一个表格将这些类型组描述为类别,还有这个引用:

C# 的五种类型类别是用户可定义的:类类型、结构类型、接口类型、枚举类型和委托类型。

虽然稍后(在 §4 类型中):

C# 语言的类型分为两大类别:值类型和引用类型。

总而言之,规范称它们为类型的类别,尽管它对该术语的使用不是很一致。

【讨论】:

  • 很好的答案!我个人在谈论一种类型时会使用“种类”,而在谈论一组类型时会使用“类别”(即类型的类别是一组相同类型的类型)。
【解决方案2】:

在类型理论中,类型的类型通常称为它的种类。这主要描述了一种类型的参数化形式,尽管它也可以用于其他分类。但我不确定它是否自然适用于您在此处所指的分类。似乎 C# 也没有一个“官方”术语。

【讨论】:

    【解决方案3】:

    我看到我们在 Roslyn 源代码中使用了“种类”,例如“可以声明 5 种可能的类型”。但是,我认为没有正式定义的术语。我会使用“类型的类型”或“种类”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      • 2022-08-05
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      相关资源
      最近更新 更多