我试图仅为一个定义的元素覆盖一个虚函数(不必创建另一个实现它的类,然后添加一个函数来覆盖它。)。
示例:
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;
}
};
}
知道如何实现这个目标吗?
感谢。
答案 0 :(得分:1)
“虚拟”和“覆盖”都与INHERITANCE相关。
答案 1 :(得分:0)
C#严格建立在类的概念之上。没有类,你不能创建一个函数/方法
另外,virtual/override
意味着继承,所以你必须从这个类派生。
答案 2 :(得分:0)
如果没有override
,您就无法inheriting the class
,virtual function
的全部内容就是overridden
中的child class
。
如果您正在使用同一个类,那么您最终是否会为该类编写一个简单的方法/函数?
所以,遵循OOP编程理念,它是为简单而设计的。易于编程。 Instead simply inherit the class and override the function
答案 3 :(得分:0)
如果你可以控制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);