因为在.NET里面静态成员不能用override那么如何才能在基类访问子类的静态成员呢
比如,我想实现如下的功能
public class CBase
{
public static string PTest
{
get{return "base";}
}
public static string GetTest()
{
return PTest;
}
}
public class CChild:CBase
{
public new static string PTest
{
get{return "child";}
}
}
像这样访问 GetTest :
string a=CChild.GetTest();
那么得到的a的值是"base",如何才能返回 "child" 呢 ?是否能够实现?
------解决方案--------------------------------------------------------
jf
------解决方案--------------------------------------------------------
不可能实现,使用虚函数吧
------解决方案--------------------------------------------------------
应该不行,你不能重写而用new的话即使不是静态的也不能访问啊
------解决方案--------------------------------------------------------
要实现这个,肯定不能用静态成员,参考下面的代码
- C# code
public class CBase { public virtual string PTest { get { return "base"; } } public virtual string GetTest() { return PTest; } } public class CChild : CBase { public override string PTest { get { return "child"; } } }
------解决方案--------------------------------------------------------
修改一下:
public virtual string GetTest()
{
return PTest;
}
应改为
public string GetTest()
{
return PTest;
}
GetTest不必做虚函数