Mik*_*sen 7 c# oop terminology
请使用以下代码:
IFoo foo = new FooImplementation();
Run Code Online (Sandbox Code Playgroud)
标识符foo有两种类型:
IFoo - 这是编译器将强制执行的类型.我只能调用属于IFoo合同的方法,否则我会遇到编译器错误.FooImplementation - 这是运行时已知的类型.我可以在运行时向下转换foo为a FooImplementation,然后调用非IFoo方法FooImplementation.我的问题:这两种类型的正确术语是什么.我可以在学校发誓,我们被教导的IFoo是标识符的静态类型,并且FooImplementation是它的动态类型,但是经过大量搜索,我似乎无法找到任何参考.
我会打电话IFoo和FooImplementation编译时和运行时类型,分别.C#规范使用这种语言,例如,在谈论虚拟方法时(第1.6.6.4节):
调用虚方法时,发生该调用的实例的运行时类型决定了要调用的实际方法实现.在非虚方法调用中,实例的编译时类型是决定因素.
我同意Mike Z.C#中的常用术语是"编译时类型"和"运行时类型".
"静态类型"和"动态类型"是完全合理的术语,但我会在C#的上下文中避免使用它们."静态类型"很容易与"静态类"混淆,"静态类"只能包含静态方法.并且"动态类型"很容易与添加到C#4的动态类型功能混淆.