Perché il costruttore Guid senza parametri genera un GUID vuoto?
-
03-07-2019 - |
Domanda
Perché il costruttore Guid senza parametri genera un GUID vuoto anziché predefinito a uno generato come con Guid.NewGuid ()?
C'è un uso particolare per un Guid vuoto?
Soluzione
Perché il costruttore Guid senza parametri genera un GUID vuoto anziché predefinito a uno generato come con Guid.NewGuid ()?
Risposta breve: poiché il linguaggio / runtime non ha permesso al progettista del tipo Guid di definire un costruttore predefinito.
Non è solo convenzionale che il valore di " costruito per difetto " struct è zero, semplicemente non è possibile definire un costruttore predefinito per una struct. Quando dici nuovo Guid () il runtime ti dà un nuovo oggetto in cui tutti i campi sono inizializzati ai loro valori predefiniti: http://msdn.microsoft.com/en-us/library/ah19swz4%28VS.71%29.aspx
Alcune motivazioni sono disponibili qui: http: //www.yoda. arachsys.com/csharp/faq/#struct.constructors
Altri suggerimenti
Questo comportamento è coerente con il resto dei tipi di valore nel framework .Net. Quando " newing up " un tipo di valore, viene utilizzato un valore predefinito. Questo è solo il valore predefinito per Guid simile al valore predefinito di Int32 pari a 0.
Una guida vuota è utile per rappresentare la mancanza di una guida. Poiché i tipi di valore non sono nullable (per impostazione predefinita sì, è possibile utilizzare nullable).
Ad esempio, utilizzo un Guid come proprietà ID molto perché sono davvero facili da lavorare. Quindi un modo per vedere se un oggetto è stato persistito (che è quando ottiene il suo ID), posso verificare il valore di id rispetto a un guid vuoto.
Penso sia convenzionale che il valore predefinito, di una struttura o di un tipo incorporato, sia zero.