0

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

例子:

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

4 回答 4

0

C# 严格建立在类的概念之上。没有类就不能创建函数/方法。
此外,virtual/override意味着继承,因此您必须从此类派生。

于 2013-04-25T05:18:14.697 回答
0

你不能没有override一个函数inheriting the class,a 的全部意义virtual function在于它可以overriddenchild class.

如果您在同一个类中进行操作,您最终不会为该类编写一个简单的方法/函数吗?

因此,遵循 OOP 编程概念,它旨在简化和易于编程Instead simply inherit the class and override the function

于 2013-04-25T05:20:58.693 回答
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);
于 2013-04-25T05:22:05.580 回答