派生类不继承基类的static成员

我们可以1、在派生类中引用基类型的静态字段,2、通过派生类类型引用基类的静态字段,例如:
public class Base
{
public static int test = 0;
}
public class Derived : Base
{
public void Method()
{
test = 100;
}
}
public class Program
{
static void Main(string[] args)
{
Derived derived = new Derived();
derived.Method();
int p = Base.test; // p = 100;
}
}
或者
public class Base
{
public static int test = 0;
}public class Derived : Base { }public class Program
{
static void Main(string[] args)
{
Derived.test = 100;
int p = Base.test; // p = 100;
}
}
但是实际上,这不是通过继承得到的,而是通过编译时静态绑定得到的,原因有两个:1、实验结果:对子类数据的修改使得基类的数据得到了修改,这显然不是继承的特性;2、IL代码,在IL代码中Derived对test的调用都被绑定为Base对test的调用。
另外,其它的静态成员,如静态方法、静态属性等,也不会被派生类型所继承,同样是编译时静态绑定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值