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() {}
}
但我一直在 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() {}
}