每种类型的标识符的正确术语是什么

本文关键字:术语 是什么 标识符 种类 类型 | 更新日期: 2023-09-27 17:56:37

采用以下代码:

IFoo foo = new FooImplementation();

标识符foo有两种类型:

  1. IFoo - 这是编译器将强制实施的类型。 我只能调用属于IFoo协定一部分的方法,否则会出现编译器错误。
  2. FooImplementation - 这是运行时已知的类型。 我可以在运行时将foo向下转换为FooImplementation,然后调用非 IFoo 方法FooImplementation

我的问题:这两种类型的正确术语是什么。 我可以在学校发誓,我们被教导IFoo是标识符的静态类型FooImplementation是它的动态类型,但是在谷歌上搜索了很多之后,我似乎找不到任何对此的引用。

每种类型的标识符的正确术语是什么

我将分别调用IFooFooImplementation编译时和运行时类型。C# 规范使用此语言,例如,在讨论虚拟方法时(第 1.6.6.4 节):

调用

虚拟方法时,发生该调用的实例的运行时类型决定了要调用的实际方法实现。在非虚拟方法调用中,实例的编译时类型是决定因素。

我同意迈克·C# 中的常用术语是"编译时类型"和"运行时类型"。

"静态类型"

和"动态类型"是完全合理的术语,但我会在 C# 上下文中避免使用它们。"静态类型"很容易与"静态类"混淆,"静态类"是一个只能包含静态方法的类。"动态类型"很容易与添加到 C# 4 中的动态类型功能混淆。

第一个是声明的类型。第二种是混凝土类型。

。至少我是这么称呼他们的。