每种类型的标识符的正确术语是什么
本文关键字:术语 是什么 标识符 种类 类型 | 更新日期: 2023-09-27 17:56:37
采用以下代码:
IFoo foo = new FooImplementation();
标识符foo
有两种类型:
-
IFoo
- 这是编译器将强制实施的类型。 我只能调用属于IFoo
协定一部分的方法,否则会出现编译器错误。 -
FooImplementation
- 这是运行时已知的类型。 我可以在运行时将foo
向下转换为FooImplementation
,然后调用非 IFoo 方法FooImplementation
。
我的问题:这两种类型的正确术语是什么。 我可以在学校发誓,我们被教导IFoo
是标识符的静态类型,FooImplementation
是它的动态类型,但是在谷歌上搜索了很多之后,我似乎找不到任何对此的引用。
我将分别调用IFoo
和FooImplementation
编译时和运行时类型。C# 规范使用此语言,例如,在讨论虚拟方法时(第 1.6.6.4 节):
调用虚拟方法时,发生该调用的实例的运行时类型决定了要调用的实际方法实现。在非虚拟方法调用中,实例的编译时类型是决定因素。
我同意迈克·C# 中的常用术语是"编译时类型"和"运行时类型"。
"静态类型"和"动态类型"是完全合理的术语,但我会在 C# 上下文中避免使用它们。"静态类型"很容易与"静态类"混淆,"静态类"是一个只能包含静态方法的类。"动态类型"很容易与添加到 C# 4 中的动态类型功能混淆。
第一个是声明的类型。第二种是混凝土类型。
。至少我是这么称呼他们的。