Una pregunta respecto a las dos formas que presenta Juan para inicializar la variable UniqueID. Cuando la inicializo desde la propiedad: ...

Juan Romero

Juan Romero

Pregunta
studenthace 7 años

Una pregunta respecto a las dos formas que presenta Juan para inicializar la variable UniqueID. Cuando la inicializo desde la propiedad:

public string UniqueId { get; private set; } = Guid.NewGuid().ToString();

¿En que momento se genera el valor UniqueId?

¿Se crea al momento de llamar al constructor? Osea, da exáctamente lo mismo inicializarla en la propiedad que en el constructor? o ¿existe diferencia entre las dos respecto a cuando se inicializa el valor?

3 respuestas
para escribir tu comentario
    Saul Fuentes Garcia

    Saul Fuentes Garcia

    studenthace 3 años

    Talvez un poco tarde te respondo, pero desde mi experiencia te digo que va ser lo mismo. En el momento que crees una nueva instancia de una clase se inicializaran todas las variables de la clase, incluso las que no les des ningun valor tambien empezaran con un valor por defecto. El constructor solamente te ayudara a configurar un set de valores ya sea por defecto o personalizado por envio de parametros, incluso puedes tener varios constructores para setear de diferentes formas tus variables.

    Juan Romero

    Juan Romero

    studenthace 7 años

    jajaja … Gracias profe Juan !! Mi corazón ya lo intuía … jejeje

    Juan Carlos Ruiz Pacheco

    Juan Carlos Ruiz Pacheco

    teacherhace 7 años

    La respuesta está en tu corazón. jaja

    Un pequeño obsequio.

    class Program { public static string UniqueId { get; private set; } = AsignadorDeGuid(); public static string UniqueId2 { get; private set; } public static string UniqueId3 { get; private set; } static void Main(string[] args) { UniqueId2 = AsignadorDeGuid(); } static Program() { UniqueId3 = AsignadorDeGuid(); } public static string AsignadorDeGuid( [CallerMemberName] string caller = "", [CallerFilePath] string path = "", [CallerLineNumber] int line = 0 ) { Console.WriteLine($"LLamado desde {caller}, línea{line} archivo: {path}"); return Guid.NewGuid().ToString(); } }

    Y la respuesta en la salida

    LLamado desde UniqueId, línea9 archivo: C:\Temp\tests\Program.cs LLamado desde .cctor, línea21 archivo: C:\Temp\tests\Program.cs LLamado desde Main, línea16 archivo: C:\Temp\tests\Program.cs
Curso de C# con .Net Core

Curso de C# con .Net Core

Profundiza en C# y .Net Core 2.1, manejando excepciones, colecciones y polimorfismo. Desarrolla tu capacidad para construir reportes inteligentes utilizando link y diccionarios. Ideal para programadores con fundamentos en C#.

Curso de C# con .Net Core
Curso de C# con .Net Core

Curso de C# con .Net Core

Profundiza en C# y .Net Core 2.1, manejando excepciones, colecciones y polimorfismo. Desarrolla tu capacidad para construir reportes inteligentes utilizando link y diccionarios. Ideal para programadores con fundamentos en C#.