C# 重写对象声明中的方法,如 Java

C# overriding methods in object declaration like in Java

但我一直在 Java 编程,所以我知道您可以在对象的实例化中覆盖方法

        private MyObject myObject=new MyObject(){
             @Override
             public void myMethod(int args){
               .
               .
               .
             }
      }

有人可以告诉我如何在 C# 中执行此操作吗...谢谢

与 Java 不同,其中所有实例方法都是 虚拟 方法,在 C# 中,您必须 virtual 关键字 显式 :

   public class MyObject {
     ...
     // in order to be overriden in a derived class, base method should be 
     // explictly declared as virtual or abstract
     public virtual void myMethod(int args){
       ... 
     } 
     ...
   }

在 C# 中,override 也是一个 关键字 ,而不仅仅是一个属性:

   // class can't be declared locally, but explictly
   public class MyOverridenObject: MyObject {
     ...
     // override is a mandatory keyword in the context
     public override void myMethod(int args){
       ... 
     } 
   }

最后,C# 不允许在本地 classes 实现,所以你必须显式声明 class (上面代码中的MyOverridenObject)然后使用:

   // Finally, you can assign an overriden class to the private field
   private MyObject myObject = new MyOverridenObject();

so I know you can Override methods in Object's declaration

这不是对象声明,而是class实例化。而 C# 中不存在此功能。

因此,您只能覆盖 class 声明的多态方法:

public class A 
{
    public virtual void DoStuff() {}
}

public class B : A 
{
    public override void DoStuff() {}
}