Contenido del Curso
C# Beyond Basics
1. Estructuras Adicionales y Manejo de Archivos
2. Estructuras y Enumeradores
3. Introducción a la Programación Orientada a Objetos (POO)
C# Beyond Basics
Acceder Correctamente a los Campos en Métodos de Struct
Hemos creado métodos, les hemos pasado datos y los hemos utilizado sin problemas, pero consideremos un ejemplo en el que el nombre del parámetro del método coincide con el nombre de un campo de la estructura:
index.cs
El compilador no muestra ningún error en este caso, sin embargo el programa es lógicamente incorrecto ya que la salida del programa muestra (0, 0)
a pesar de que hemos utilizado setValue(5, 7)
.
Esto se debe a que la sentencia x = x
es muy ambigua ya que tanto el parámetro del método como el campo de la estructura tienen el nombre x
. Según el compilador, en la sentencia x = x
el parámetro del método x
asigna el valor x
a self de nuevo, lo que lógicamente es una sentencia nula y por lo tanto no hace nada.
Para arreglar esto usamos la palabra clave this
. La palabra clave this
indica al compilador que nos estamos refiriendo al campo de la estructura.
La sintaxis es this.fieldName
. Así que el código fijo se verá como:
index.cs
Ahora el compilador sabe que en la sentencia x = x
, la x
de la izquierda es un campo de estructura mientras que x
de la derecha es un parámetro de método, y por tanto el campo se actualiza correctamente esta vez.
Utilizamos la palabra clave this
para resolver cualquier ambigüedad en el código. Generalmente es una buena práctica usar siempre la palabra clave this
cuando se accede a campos en métodos struct.
¿Todo estuvo claro?
Contenido del Curso
C# Beyond Basics
1. Estructuras Adicionales y Manejo de Archivos
2. Estructuras y Enumeradores
3. Introducción a la Programación Orientada a Objetos (POO)
C# Beyond Basics
Acceder Correctamente a los Campos en Métodos de Struct
Hemos creado métodos, les hemos pasado datos y los hemos utilizado sin problemas, pero consideremos un ejemplo en el que el nombre del parámetro del método coincide con el nombre de un campo de la estructura:
index.cs
El compilador no muestra ningún error en este caso, sin embargo el programa es lógicamente incorrecto ya que la salida del programa muestra (0, 0)
a pesar de que hemos utilizado setValue(5, 7)
.
Esto se debe a que la sentencia x = x
es muy ambigua ya que tanto el parámetro del método como el campo de la estructura tienen el nombre x
. Según el compilador, en la sentencia x = x
el parámetro del método x
asigna el valor x
a self de nuevo, lo que lógicamente es una sentencia nula y por lo tanto no hace nada.
Para arreglar esto usamos la palabra clave this
. La palabra clave this
indica al compilador que nos estamos refiriendo al campo de la estructura.
La sintaxis es this.fieldName
. Así que el código fijo se verá como:
index.cs
Ahora el compilador sabe que en la sentencia x = x
, la x
de la izquierda es un campo de estructura mientras que x
de la derecha es un parámetro de método, y por tanto el campo se actualiza correctamente esta vez.
Utilizamos la palabra clave this
para resolver cualquier ambigüedad en el código. Generalmente es una buena práctica usar siempre la palabra clave this
cuando se accede a campos en métodos struct.
¿Todo estuvo claro?