C#重载运算符必须静态吗? 为什么必须是静态的?

来源:互联网 发布:淘宝小商品拍摄技巧 编辑:程序博客网 时间:2024/05/22 02:27
public static Vector operator +(Vector lhs, Vector rhs)        {            //运算符重载代码        }


运算符声明方式与方法的声明方式相同,但operator关键字告诉编译器,它实际上是一个运算符重载,后面是相关运算符的符号,在本例中就是+。返回类型是在使用这个运算符时获得的类型。在本例中,把两个矢量加起来会得到另一个矢量,所以返回类型就是Vector。对于这个+运算符重载,返回类型与包含类一样,但这种情况并不是必需的。两个参数就是要操作的对象。对于二元运算符(带两个参数),如+和-运算符,第一个参数是放在运算符左边的值,第二个参数是放在运算符右边的值
C#要求所有的运算符重载都声明为public和static,这表示它们与它们的类或结构相关联,而不是与实例相关联,所以运算符重载的代码体不能访问非静态类成员,也不能访问this标识符;这是可以的,因为参数提供了运算符执行任务所需要知道的所有数据。
 学习C#静态函数及变量的一个精典例子与代码  
(1)用于对静态字段、只读字段等的初始化。  
(2)添加static关键字,不能添加访问修饰符,因为静态构造函数都是私有的。  
(3)类的静态构造函数在给定应用程序域中至多执行一次:只有创建类的实例或者引用类的任何静态成员才激发静态构造函数  
(4)静态构造函数是不可继承的,而且不能被直接调用。  
(5)如果类中包含用来开始执行的 Main 方法,则该类的静态构造函数将在调用 Main 方法之前执行。任何带有初始值设定项的静态字段,则在执行该类的静态构造函数时,先要按照文本顺序执行那些初始值设定项。  
(6)如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数。 
阅读全文
0 0
原创粉丝点击