C#覆盖虚函数而不必实现另一个类

时间:2013-04-25 05:10:51

标签: c# class override virtual inheritance

我试图仅为一个定义的元素覆盖一个虚函数(不必创建另一个实现它的类,然后添加一个函数来覆盖它。)。

示例:

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;
        }
    };
}

知道如何实现这个目标吗?

感谢。

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

C#严格建立在类的概念之上。没有类,你不能创建一个函数/方法 另外,virtual/override意味着继承,所以你必须从这个类派生。

答案 2 :(得分:0)

如果没有override,您就无法inheriting the classvirtual 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);