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
- C#重载运算符必须静态吗? 为什么必须是静态的?
- 类中的线程函数为什么必须是静态的
- C#要求运算符重载必须是public和static
- 运算符重载常见问题:C#二元运算符的参数之一必须是包含类型
- C#中被委托的方法必须是静态的吗?
- java主方法main()方法为什么要必须是静态static的?
- 为什么接口里面的值必须是常量final且静态static
- 在java中为什么main方法必须是静态的解释
- Java 中,为什么在静态方法中可以调用的方法、可以使用的成员变量必须是静态的?
- 静态存储的变量初始化必须是常量表达式
- 解决:操作符重载, 二元运算符的参数之一必须是包含类型
- 静态构造函数 。。静态类中成员必须全是静态的。不能在静态类中声明实例成员
- 使用STL模板必须重载的运算符
- 为什么静态成员必须在类外初始化
- 接口的变量为什么必须是常量!
- 为什么必须是final的呢?
- 为什么mian函数必须是static的
- 为什么心跳包(HeartBeat)是必须的?
- 高性能Web架构
- js正则表达式写法
- BackgroundWorker线程控件用法
- androidstudio 卡顿编译慢的解决方法总结
- 鼠标移动到物体上,利用label和box来显示提示框的区别
- C#重载运算符必须静态吗? 为什么必须是静态的?
- JS数组
- shell 脚本编程学习(六) 函数
- Android反编译apk,修改资源,打包,签名全过程
- 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)
- CentOS7安装JDK1.8
- Baidu Api demo
- Spring Boot + Mybatis + Redis二级缓存(Java Web现代化开发)
- boost::locale::conv:: 字符编码转换