MyClass在C#中的等价,评论者@JonEgerton在看这个问题时提到MyClass是VB.Net中的关键字。由于从未使用过它,我查阅了它的文档:MyClass关键字的行为就像一个对象变量,它引用最初实现的类的当前实例。MyClass与Me类似,但对它的所有方法调用都被视为该方法是NotOverridable。在一些特定的场景中,我可以看到它的用处。我无法弄清楚的是如何在C#中获得相同的行为-也就是说,确保调用虚拟方法myMethod实际上是针对当前类中的myMethod调用的,而不是派生的myMethod(又名IL,调用调用的callvirt)?我可能只是有一个完整的精神空白时刻。根据JonSkeet的说法,没有这样的等价物:不,C#没有VB.NET的MyClass关键字的等价物。如果要保证不调用该方法的重写版本,则需要先将其设置为非虚函数。一个明显的解决方法是:publicvirtualvoidMyMethod(){MyLocalMethod();}privatevoidMyLocalMethod(){...}然后,当VB用户编写MyClass.MyMethod()时,您可以调用MyLocalMethod()MyClass。我的方法()。VB.Net中没有与MyClass关键字等效的C#。要保证不会调用该方法的重写版本,只需将其设为非虚函数即可。除了答案说它不存在,所以你必须让它成为非虚拟的。这是一个臭(阅读:不要这样做!)解决方法。但说真的,重新考虑你的设计。基本上将必须从根本上调用的任何方法移动到位于现有基类之上的“超级”基类中。在现有类中调用base.Method()以始终调用非覆盖类。以上就是《C#学习教程:C#中相当于MyClass》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——voidMain(){DerivedClassInstance=newDerivedClass();实例.MethodCaller();}classInternalBaseClass{publicInternalBaseClass(){}publicvirtualvoidMethod(){Console.WriteLine("BASEMETHOD");}}classBaseClass:InternalBaseClass{publicBaseClass(){}publicvoidMethodCaller(){base.Method();}}classDerivedClass:BaseClass{publicDerivedClass(){}publicoverridevoidMethod(){Console.WriteLine("DERIVEDMETHOD");}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
