一个类型的类型有什么(官方)术语?

7

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

哪种术语是指类型的类型最合适/官方?

示例:

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

Haskell 称这种东西为 "kind"。也许在 .NET 中类似。 - siride
不确定是否有一个官方术语来描述包括类、接口、枚举、类型等的集合。我会称它们为结构,但会在文档的上下文中加入脚注/词汇表条目来定义我对该术语的使用。 - JohnLBevan
这个问题需要 Jon Skeet :)! - Behnam Esmaili
既然我们正在谈论语法,我会说它是一个“关键字”,而关键字的类型是“结构性”的。 “int”将是“数据类型”,而“partial” =>“上下文”的。@BehnamEsmaili当我阅读这个问题时,我想到了他.. :D - tweakch
@Alechandro 我称之为“语法分析”,因为我的应用程序目前仅使用了 Roslyn 的语法分析部分,但我想在这一点上它实际上更多的是语义分析... - lesderid
@lesderid 啊,我明白了... 这是一个非常有趣的问题。也许没有官方术语,因此也没有官方答案。在找到正确的词之前,我会称它们为JuckNorris。或者JonSkeet... 也许更好一些 =) - tweakch
3个回答

11
如果您想知道官方名称,请参阅官方来源:C#语言规范。引用自该规范(§1.3类型和变量; 强调我的):
在C#中有两种类型:值类型和引用类型。[...]
C#的值类型进一步分为简单类型、枚举类型、结构类型和可空类型,C#的引用类型进一步分为类类型、接口类型、数组类型和委托类型。
然后有一个表格描述了这些类型组作为类别,并且还有这样的引用:
C#的五个类型类别是用户定义的:类类型、结构类型、接口类型、枚举类型和委托类型。
尽管稍后(在§4类型):
C#语言的类型分为两个主要类别:值类型和引用类型。
总之,规范将它们称为类型类别,尽管其对该术语的使用不太一致。

很好的回答!个人而言,当谈论一种类型时,我会使用“kind”,而当谈论一组类型时,我会使用“category”(即类型的类别是同一种类型的一组类型)。 - lesderid

3

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


2

我在Roslyn源代码中看到过我们使用“kind”,比如“有5种可能的类型可以声明”。然而,我不认为这个术语有官方定义。我会使用“类型种类”或“种类”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接