class StaticTools:IDisposable
{
public void Dispose()
{
}
}
using (StaticTools tools = new StaticTools())
//the class Tool must be impliment
//IDisposable interface
{
}
虚拟成员不能是私有成员,因为这样会自相矛盾--不能说成员可以由派生类重定,同时派生类又不能访问它.
在执行混合类型的运算符重载时,它们中必需确保没有相同的签名的运算符重载。而且操作数的顺序与运算符重载的参数顺序相同,否则操作就会失败!
没有抽像接口,抽像类可以继承了接口,但必须实现它.
抽象类可以有非抽象成员.非抽象类不能有抽象成员.
接口中的成员访问权限,在实现它的类当中,两者权限必须相同.
派生类重写基类中的虚拟成员,访问权限必须相同,不能放大或缩小
派生类用关键字 NEW 隐藏基类中的成员可以缩小访问权限,但不能放大
派生类用关键字 NEW 隐藏基类中的虚拟成员,此派生类的派生类便不能再重定隐藏掉的虚拟成员
bool j =(<objectname>.GetType ()==typeof(<classname>));
只有当<objectname>是<classname>的一个实例(是派生类或父类也不行),j才能为真.否则为假.
接口和抽象类都不能直接实例化,但可以声明它们的变量.如果这样做,就可以使用多态性把继承这两种类型的对象指定给它们的变量.接着通过这些变量来使用这些类型的成员,但不能直接访问派生对流的其他成员.
接口不能包含字段 构造函数 静态成员或常量.
接口不能继承。
在考虑是深度复制还是非深度复制时,考虑的被操作的对象是引用类型不是值类型,而不必考虑自身的数据类型,因为这与自身的类型是无关的。
A =B is C,当B是C的派生类,实现接口C的的类,或继承实现接口C的类的子类,A为真。
当B是实现接口C的的结构,A为真
当父类B是由派生类型C转化而来时,A为真。反知B不是由派生类型C转化而来时为假.
一些重载运算符必须成对出现,如<>和>= <=等.
可以重载的运算符:
一远运算符:+,-,!,++,~,--,true,false
二元运算符:+,-,*,/,&,%,|,^,<<,>>
比较运算符:==,!=,<,>,<=,>=
class jj<T1>
{
public T1 iner;
public jj()
{
iner = default(T1); //DEFAULT关键字在这里有用,当T1为值类型时为0,为引用时为null
}
public void kk()
{
iner = default(T1);
}
}
基类的约束会自动被它的派生类所继承.