110,535
社区成员
发帖
与我相关
我的任务
分享
class MainClass
{
public static void Main(string[] args)
{
baseclass[] cls = new baseclass[2];
cls[0] = new baseclass();
cls[1] = new subclass();
// 对数组cls而言,存储的都是baseclass类型的对象
// 但是方法的调用,会动态地编译并执行subclass对象的方法
cls[0].SomeMethod();
//即便强制将cls[1]的类型从subclass转换为baseclass,仍会调用subclass的somemethod()
((baseclass)cls[1]).SomeMethod();
}
}
class baseclass
{
public int i = 0;
public virtual void SomeMethod()
{
Console.WriteLine("calling in baseclass method. i= {0}", this.i);
}
}
class subclass : baseclass
{
public override void SomeMethod()
{
this.i = 5;
Console.WriteLine("calling in subclass method. i= {0}", this.i);
}
}
calling in baseclass method. i= 0
calling in subclass method. i= 5
class baseclass
{
public int i = 0;
public virtual void SomeMethod();
}
class subclass : baseclass
{
public override void SomeMethod()
{
this.i = 5;
base.SomeMethod();
}
}
this可以换成你的类实例
MethodInfo m = this.GetType().GetMethod("方法名");
m.Invoke(this);
this.GetType().GetProperty("属性名").SetValue(...)