none
Propiedades y Constructores en c# RRS feed

  • Pregunta

  • Hola !

    tengo una duda con respecto a la creación de un objeto, aquí deja las dos opciones que conozco y me gustaría saber cual es la correcta.

    primera opción 

    persona per = new persona();
    per.Nombres="Beto";
    per.Apellido="castillo";
    

    segunda opcion

    persona per= new persona("Beto","Castillo");


    desarrollador .NET

    jueves, 8 de mayo de 2014 18:39

Todas las respuestas

  • La primera seria la correcta si tienes un constructor que no recibe parámetros.

    Si tienes un constructor que recibe parámetros puedes crearlo de la segunda forma

    Por ejemplo:

     Persona (string nombre, string apellido) // Constructor
         {
                  Nombre = nombre;
                  Apellido = apellido;
         }

    Tambien puedes crear el objeto de la siguiente manera:

    Persona persona = new Persona()
    
    {
    
    nombre = value;
    apellido = value;
    
    }


    Saludos


    Martín Fabregues
    Córdoba, Argentina



    • Editado Martin Fabregues jueves, 8 de mayo de 2014 19:05
    • Propuesto como respuesta Sergio Parra jueves, 8 de mayo de 2014 21:44
    • Votado como útil becavas lunes, 12 de mayo de 2014 15:02
    jueves, 8 de mayo de 2014 19:02
  • Hola.

    Tal como comenta Martin es correcto, aunque a mi modo de ver es mas flexible la segunda forma, asi si más adelante tienes que añadir mas campos,no tienes que modificar el constructor, simplemente inicializas los campos que necesites. Es mas flexible.

    Un saludo.

    jueves, 8 de mayo de 2014 19:26
  • Mi duda venia porque he  visto clases con propiedades con setters privados y usaban constructores

    desarrollador .NET

    lunes, 12 de mayo de 2014 15:04
  • Hola, el lenguaje te da las dos opciones para que puedas controlar como hacerlo. Depende del programador. Habrá ocasiones en las que te interesa crear una clase y cuando se cree no puede ser modificada (object values en DDD) y otras en las que sí.

    Un ejemplo:

    class MedicionDeTemperatura {
      public MedicionDeTemperatura(int grados, DateTime cuando)
      {
        Grados = grados;
        Fecha = cuando;
      }
      public int Grados { get; private set; }
      public DateTime Fecha { get; private set; }
    }

    En este caso, cuando se crea una medición no tiene sentido modificarle los parámetros, es una decisión del programador y el cliente (el programador que utiliza objetos de esa clase) no tiene la opcion de realizar una operación incorrecta.

    http://es.wikipedia.org/wiki/Encapsulamiento_(inform%C3%A1tica)

    Salu2

    lunes, 12 de mayo de 2014 15:25
  • Hay ocasiones en las que en una clase alguna propiedad no puede ser modificada, por eso el private set.

    Saludos


    Martín Fabregues
    Córdoba, Argentina

    lunes, 12 de mayo de 2014 15:35