パラメータなしのGuidコンストラクターが、Guid.NewGuid()のようにデフォルトで生成されたGUIDではなく、空のGUIDを生成するのはなぜですか?
空のGUIDの特定の用途はありますか?
パラメータなしのGuidコンストラクターが、Guid.NewGuid()のようにデフォルトで生成されたGUIDではなく、空のGUIDを生成するのはなぜですか?
空のGUIDの特定の用途はありますか?
パラメータなしのGuidコンストラクターが、Guid.NewGuid()のようにデフォルトで生成されたGUIDではなく、空のGUIDを生成するのはなぜですか?
簡単な答え:言語/ランタイムでは、Guid型の設計者がデフォルトのコンストラクターを定義できなかったためです。
「デフォルトで構築された」構造体の値がゼロであるのは慣例であるだけでなく、構造体のデフォルトのコンストラクターを定義することはできません。new Guid()と言うと、ランタイムはすべてのフィールドがデフォルト値に初期化される新しいオブジェクトを提供します:http: //msdn.microsoft.com/en-us/library/ah19swz4%28VS.71%29.aspx
いくつかの理論的根拠はここで見つけることができます:https://web.archive.org/web/20131102220804/http://www.yoda.arachsys.com/csharp/faq/#struct.constructors
この動作は、.Net フレームワークの残りの値の型と一致しています。値の型を「新しくする」場合、デフォルト値が使用されます。これは、Int32 のデフォルト値 0 に似た Guid のデフォルトです。
空のGUIDは、GUIDがないことを表すのに役立ちます。値型はnull許容ではないため(デフォルトではyesを使用できます)。
たとえば、IdプロパティとしてGuidを使用することが多いので、操作が非常に簡単です。したがって、オブジェクトが永続化されているかどうかを確認する1つの方法(IDを取得するとき)では、idの値を空のGUIDと照合できます。
構造体または組み込み型のデフォルト値はゼロであるのが一般的だと思います。