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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top