En C #, con un conjunto de clases heredado, al llamar a un método, ¿debemos usar las palabras clave 'base.methodname y this.methodname' ... independientemente de si es un método anulado o no?
Es probable que el código experimente cambios en términos de lógica y tal vez algunas condiciones similares a IF-ELSE puedan presentarse en una fecha posterior. Entonces, en ese momento, el desarrollador debe verse obligado a volver a visitar cada línea de código y asegurarse de que elija correctamente el método que se llama --- base.methodname () o this.methodname () ELSE the. NET Framework llamará a DEFAULT (creo que es base.methodname ()) y toda la lógica puede ser descartada.
c#
inheritance
MukeshAnAlsoRan
fuente
fuente
Respuestas:
Usar la
base
palabra clave no es una cuestión de preferencia, es una cuestión de corrección. Si desea llamar a la implementación de la clase base en un método anulado, debe usarbase
. Si no quieres llamar a eso, no puedes usarlobase
.La
this
palabra clave, por otro lado, es una cuestión de preferencia en la mayoría de los casos. Creo que solo satura innecesariamente el código, por lo que no lo uso si no es necesario. Donde es útil es si tiene un parámetro de método con el mismo nombre que el campo (o propiedad). Lo usaríathis
en tal caso. Pero si estoy escribiendo un nuevo código, tiendo a usar convenciones de nombres que eviten este problema.fuente
this
como se supone. En proyectos más grandes donde tendré junior (potencialmente incluso nuevas contrataciones), nuestro estándar es usar esas palabras clave solo para que el alcance sea inmediatamente evidente, independientemente del nivel de experiencia del codificador.base
todos modos al llamarlo, aunque sea semánticamente incorrecto?this
es lo más básico posible. Si los programadores aún no entienden el alcance de los métodos (y elthis.
acceso implícito de los miembros del objeto, incluso cuando no están escritos explícitamente), entonces tienen que estudiar. Eso está en ellos .this
es realmente fundamental. Se espera el conocimiento de cada peldaño de la escalera de habilidades de programación.Sugeriría que si está llamando explícitamente a un método base desde una clase en la que se anula ese método, tiene un grave problema con la lógica y la legibilidad.
base
realmente solo debería aparecer cuando se llama a la implementación base de un método anulado desde ese método anulado.En cualquier otro lugar, debería estarlo
this
(si el método no se anula, irá a la clase base de todos modos) y no hay nada de malo en permitir que el compilador deduzca eso.fuente
this
palabra clave: no existe una regla estricta y rápida para aplicar lathis
palabra clave, ya que es una preferencia personal, pero su código podría estar desordenado.Pros y contras de usar esta palabra clave en C #
base
palabra clave (reutilización): ya hay respuestas que indican el uso de base. Me gustaría agregar un punto.La funcionalidad común para todas las clases derivadas vendría en la clase base y puede llamar al método base seguido de la implementación específica en el método en la clase derivada logrando la reutilización.
fuente
Además de lo mencionado, puede usar "esto" al llamar a una función de extensión.
No puedes hacer:
desde el interior del cuerpo de MyClass. Solamente:
No hay una razón real para crear extensiones estáticas para la clase que está haciendo. El único escenario en el que me resultó útil fue cuando tenía funciones de extensión basadas en la interfaz que está implementando mi clase, no en la clase misma.
fuente
Recomendaría soltar el
this.
prefijo, excepto en los casos en que agrega simetría. P.ej:fuente