Juan Romero
PreguntaUna 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?
Saul Fuentes Garcia
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
jajaja … Gracias profe Juan !! Mi corazón ya lo intuía … jejeje

Juan Carlos Ruiz Pacheco
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