Al mirar this question, el comentarista @Jon Egerton mencionó que MyClass
era una palabra clave en VB.Net
. Ya que nunca lo usaron, fui y encontré el documentation en él:equivalente de MyClass en C#
La palabra clave MiClase se comporta como una variable de objeto en referencia a la instancia actual de una clase tal como se aplica en un principio. MyClass es similar a Me, pero todas las llamadas a métodos se tratan como si el método fuera NotOverridable.
Veo cómo podría ser útil, en algunos escenarios específicos. Lo que no puedo pensar es cómo obtendría el mismo comportamiento en C#, es decir, para garantizar que una llamada a un método virtual myMethod
se invoca contra myMethod
en la clase actual, y no un derivado myMethod
(aka in IL, invocando call
en lugar de callvirt
)?
Sin embargo, podría estar teniendo un completo momento mental en blanco.
Por supuesto, usted puede hacer esto con la reflexión y 'DynamicMethod' y costumbre IL-generación (usando' 'call' en lugar de callvirt' como sugieres), pero que iba a terminar con un montón de feo código para algo que es probablemente una mala idea en primer lugar. Si realmente necesita este comportamiento por alguna razón, entonces la solución de Heinzi es el camino a seguir. – LukeH