重写虚函数而不必实现另一个类
本文关键字:实现 另一个 不必 函数 重写 | 更新日期: 2023-09-27 18:10:59
我试图覆盖一个虚拟函数仅为一个定义的元素(而不必创建另一个类来实现它,然后添加一个函数来覆盖它…)。
的例子:
public class MyClass
{
public virtual bool ChangeStatus(String status)
{
return false;
}
}
void test()
{
//The following is written as an example of what I am trying to achieve & does not work
MyClass blah = new MyClass()
{
public override bool ChangeStatus(String status)
{
return true;
}
};
}
知道如何实现这一点吗?
谢谢。
如果你控制了MyClass
,你可以让你想要的方法调用一个委托,这个委托可以在运行时为每个单独的对象替换…
class MyClass
{
public void Func<SomeParameterType,SomeReturnType> myDelegate {get;set;}
public SomeReturnType myFunction(SomeParameterType parameter)
{
if(myDelegate==null)
throw new Exception();
return myDelegate(parameter);
}
}
...
MyClass obj = new MyClass();
SomeParameterType p = new SomeParameterType();
obj.myDelegate = (x)=>new SomeReturnType(x);
SomeReturnType result = obj.myFunction(p);
"virtual"answers"override"都与INHERITANCE有关。
1。虚方法可以重新定义。virtual关键字指定在派生类中重写的方法。我们可以在不修改程序其余部分的情况下添加派生类型。因此,对象的运行时类型决定了行为。
2。当您希望允许派生类重写基类的方法时,必须在基类方法中创建虚方法,并且必须在派生类方法中使用关键字override创建方法。
你不能没有inheriting the class
的override
函数,virtual function
的全部意义在于它可以在child class
中成为overridden
。
如果你在同一个类中做这件事,你不会最终为这个类写一个简单的方法/函数吗?
因此,遵循面向对象编程的概念,它是为了简单而设计的&易于编程。Instead simply inherit the class and override the function
c#严格地建立在类的概念之上。没有类就不能创建函数/方法。
另外,virtual/override
意味着继承,所以你必须从这个类派生。