locked
que significa {get; set;} RRS feed

  • Pregunta

  • Buenos Dias amigos, espero que me puedan ayudar con una consulta, es la siguiente:

    Primero que significa esto : {get; set;}

    Luego si esto es igual que el otro

    pública clase Género { privado cadena nombre ; // Este es el llamado "campo de respaldo" pública cadena Nombre // Esta es su propiedad { obtener { volver nombre ;} set { nombre = valor ;} } }

    o

    pública clase Género { pública string Nombre { get; set ; }

    }

    he visto que es una manera abreviada, pero no se que abrevia si no se para que sirve. :S

    GRACIAS DE ANTEMANO.

    miércoles, 15 de julio de 2015 16:52

Respuestas

  • Hola Explores_21,

    A ver, aquí hay mucha teoría que desplegar. Intentaré hacerlo para que despejes dudas.

    Una clase posee miembros, los miembros son la manera como "el mundo" se comunica con las clases para obtener algún valor, asignar algún valor o pedirle que haga algo, entre otras cosas. Miembros son por ejemplo los métodos, las propiedades, los campos, etc. Pero concentrémonos en las propiedades. Las buenas practicas mencionan que las clases deben de exponer los valores (lectura y/o escritura) a través de propiedades  mas no a través de campos públicos (variables), esto por un tema de seguridad y flexibilidad.

    Una propiedad es un miembro que pertenece a una clase y que nos permite obtener un valor (get) o asignar un valor (set). 

    Tanto get como set se denominan descriptores de acceso. Como ya te había comentado, get se utiliza para obtener el valor de una propiedad y set se utiliza para asignar el valor a una propiedad. Significa que si tienes una propiedad que sólo implementa el descriptor de acceso get, más no el descriptor de acceso set, entonces se trata de una propiedad de sólo lectura.

    Cuando no requieres personalizar ningún descriptor de acceso, entonces puedes considerar el uso de las propiedades autoimplementadas, no hay diferencia entre ellas, es un modo de abreviar la escritura en caso no requierás lógica en los descriptores.

    Un ejemplo de propiedad :

    public class Fecha
    {
        private int mes = 2;
    
        public int Mes
        {
            get
            {
                return mes;
            }
            set
            {
                if ((value > 0) && (value < 13))
                {
                    mes = value;
                }
            }
        }
    }

    La propiedad del ejemplo valida en el descriptor de acceso set, que el usuario haya ingresado un mes válido.

    Pero, si no quisiéramos tener lógica en los descriptores, entonces implementamos una propiedad autoimplementada

    public int Mes { get; set; }

    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.

    Willams Morales
    Arequipa - PERÚ

    • Marcado como respuesta Explores_21 miércoles, 15 de julio de 2015 18:18
    miércoles, 15 de julio de 2015 17:21

Todas las respuestas

  • hola

    son propiedades autoimplementadas

    Auto-Implemented Properties (C# Programming Guide)

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 15 de julio de 2015 17:18
  • Hola Explores_21,

    A ver, aquí hay mucha teoría que desplegar. Intentaré hacerlo para que despejes dudas.

    Una clase posee miembros, los miembros son la manera como "el mundo" se comunica con las clases para obtener algún valor, asignar algún valor o pedirle que haga algo, entre otras cosas. Miembros son por ejemplo los métodos, las propiedades, los campos, etc. Pero concentrémonos en las propiedades. Las buenas practicas mencionan que las clases deben de exponer los valores (lectura y/o escritura) a través de propiedades  mas no a través de campos públicos (variables), esto por un tema de seguridad y flexibilidad.

    Una propiedad es un miembro que pertenece a una clase y que nos permite obtener un valor (get) o asignar un valor (set). 

    Tanto get como set se denominan descriptores de acceso. Como ya te había comentado, get se utiliza para obtener el valor de una propiedad y set se utiliza para asignar el valor a una propiedad. Significa que si tienes una propiedad que sólo implementa el descriptor de acceso get, más no el descriptor de acceso set, entonces se trata de una propiedad de sólo lectura.

    Cuando no requieres personalizar ningún descriptor de acceso, entonces puedes considerar el uso de las propiedades autoimplementadas, no hay diferencia entre ellas, es un modo de abreviar la escritura en caso no requierás lógica en los descriptores.

    Un ejemplo de propiedad :

    public class Fecha
    {
        private int mes = 2;
    
        public int Mes
        {
            get
            {
                return mes;
            }
            set
            {
                if ((value > 0) && (value < 13))
                {
                    mes = value;
                }
            }
        }
    }

    La propiedad del ejemplo valida en el descriptor de acceso set, que el usuario haya ingresado un mes válido.

    Pero, si no quisiéramos tener lógica en los descriptores, entonces implementamos una propiedad autoimplementada

    public int Mes { get; set; }

    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.

    Willams Morales
    Arequipa - PERÚ

    • Marcado como respuesta Explores_21 miércoles, 15 de julio de 2015 18:18
    miércoles, 15 de julio de 2015 17:21
  • Excelente--Gracias por tu aporte amigo.. y gracias a los demas por apoyar! 
    miércoles, 15 de julio de 2015 18:18
  • Se podría decir que cuando queremos separar el modelo de la lógica utilizamos esa propiedad autoimplementada?
    viernes, 24 de mayo de 2019 11:02