文件名称:静态和动态绑定-大彩串口屏各组态控件详细介绍
文件大小:4.46MB
文件格式:PDF
更新时间:2024-06-28 03:33:30
C#5.0 PDF C#学习
7.2 静态和动态绑定 根据构成表达式(参数、操作数、接收器)的类型或值确定操作含义的过程通常称为绑定。例如,方法 调用的含义是根据接收器和参数的类型确定的。运算符的含义是根据其操作数的类型确定的。 在 C# 中,操作的含义通常在编译时根据其构成表达式的编译时类型确定。同样,如果表达式包含错误, 编译器将检测并报告该错误。此方法称为静态绑定。 但是,如果表达式为动态表达式(即类型为 dynamic),则这指示它所参与的任何绑定都应基于其运行 时类型(即它在运行时所表示的对象的实际类型),而不是它在编译时的类型。因此,此类操作的绑定 推迟到要在程序运行过程中执行此操作的时间。这称为动态绑定 (dynamic binding)。 当操作是动态绑定时,编译器只执行很少检查或根本不执行检查。而当运行时绑定失败时,错误将在运 行时报告为异常。 C# 中的以下操作会进行绑定: 成员访问:e.M 调用方法:e.M(e1,…,en) 委托调用: e(e1,…,en) 元素访问:e[e1,…,en] 对象创建:new C(e1,…,en) 重载的一元运算符:+、-、!、~、++、--、true、false 重载的二元运算符:+、-、*、/、%、&、&&、|、||、??、^、<<、>>、==、!=、>、<、>=、<= 赋值运算符:=、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>= 隐式转换和显式转换 不涉及动态表达式时,C# 默认为静态绑定,这表示在选择过程中使用构成表达式的编译时类型。但是, 当上面列出的操作中的构成表达式之一为动态表达式时,操作会改为动态绑定。