-
重载运算符不能做什么:
1)创造新运算符
2)改变运算符语法
3)重定义运算符如何处理预定义类型(如:+等于-)
4)改变运算符的优先级和结合性
查看全部 -
哪些运算符可以重载:
一元运算符:+、-、!、~、++、--、true、false
注:操作数必须是类或结构
二元运算符:+、-、*、/、%、&、|!、^、<<、>>、==、!=、>、<、>=、<=
注:两个操作数至少有一个是类或结构
不能重载:=、&&、||、[](索引操作符)、()等等
查看全部 -
重载运算符:
利用现有的某种运算符,针对自定义类或者结构,定义某种运算操作。
为什么要重载运算符:
利用现有运算符,简化自定义类型的操作。最好是,该运算符和该操作,具有一定以相关性。
语法:
public static Dog operator+(Dog male,Dog female)
{
....
return new Dog();
}
说明:Dog为返回值,重载加法(+)运算符。
查看全部 -
自定义转换:为自己的结构或者类定义显示和隐式转换
原因:为了让我们自己的结构或者类可以变成一个预期相关的类型,并且使这种转换更加简单
隐式转换语法:
public static implicit operator Dog(Cat cat)
{
....
}
显示转换语法:
public static explicit operator Dog(Cat cat)
{
....
}
说明:其中implicit为隐式关键字,explicit为显示关键字。Dog是目标类型。语句中无函数名称
查看全部 -
装箱:
根据值类型的值,在堆上创建一个完整的引用类型对象,并返回对象的引用,是一种隐式转换。
拆箱:
将装箱后的对象转换回值类型的过程,是一种显示转换(in a =(int)b; 强制转换)
查看全部 -
总结扩展要求:
1、扩展方法所属的类,必须是static类
2、扩展方法本身必须是static方法
3、扩展方法的第一个参数类型,必须是this+类名
查看全部 -
如何扩展方法:
1、如果有源代码,直接添加一个新方法
2、如果不能修改但是也不是密闭类,可以派生子类扩展
3、如果以上条件都不满足,可以使用静态类扩展方法
查看全部 -
静态类作用:
主要用于基础类库(如:数学库(Math类))和扩展方法。
查看全部 -
静态类:
1、如果类只包含了静态的方法和属性,并且标识为static。则此类为静态类
2、静态类不能创建实例,不能被继承(相当于sealed关键字定义的密闭类)
3、可以为静态类定义一个静态构造函数,初始化静态成员。
查看全部 -
静态构造函数:
1)静态构造函数用于初始化静态字段。(为静态成员而生)
2)在引用任何静态成员之前,和创建任何实例之前调用
3)与类同名,使用static,无参数,无访问修饰符
查看全部 -
静态函数:
1)静态函数也独立于任何实例,没有实例也可以调用。
2)静态函数不能访问实例成员,仅能访问其他静态成员。
查看全部 -
静态成员将被类的所有实例共享(即公共财产),所有实例都访问同一内存位置。
静态成员将直接通过类名访问,不需要实例化。(它们仅和整个类有关)
静态成员的生存期:独立于任何实例,没有实例也可以访问。其初始化语句在任何静态成员使用之前调用。
例如:系统方法内的字段均使用静态成员。不需要实例化,直接调用。
查看全部 -
类的静态成员:标识为static的字段、方法、属性、构造函数、事件就是静态成员。
查看全部 -
自定义转换
查看全部 -
静态成员及函数
查看全部
举报