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