当 C # 中出现早期/晚期绑定时,我试图理清头绪。
非虚方法总是早期绑定的。虚方法总是后期绑定: 编译器插入额外的代码来解析要在执行时绑定到的实际方法,并检查类型安全性。所以子类型使用后期绑定。
使用反射调用方法是后期绑定的一个例子。我们编写代码来实现这一点,而不是编译器。(例如调用 COM 组件)
VB.NET 支持关闭 OptionStrick 时的隐式后期绑定。当一个对象被分配给一个声明为 Object 类型的变量时,该对象将被延迟绑定。VB 编译器插入代码,以便在执行时绑定到正确的方法并捕获无效调用。C # 不支持这个特性。
我走的方向对吗?
调用委托和通过接口引用调用方法怎么样? 这是早期绑定还是晚期绑定?