答えて
Guid.Empty == default(Guid)
以来、それは本当に重要ではありませんが、私は可読性のためにGuid.Empty
を好むでしょう。
私はどちらも可読性の観点からは問題ないと主張しますが、実際には小切手が実際に意味するものになります。レコードがデフォルト状態かどうかを確認することは、レコードに空の値(IMO)が含まれているかどうかをチェックすることとは異なります。 – James
あなたは初期化されていない状態の記録を持っているので、私はそれゆえ、それはデフォルト値が含まれます、純粋に二を言うでしょう。変数が空であるかどうかではなく、変数がデフォルト状態かどうかをチェックしています.2つの異なるチェック(IMO)です。
Guid.Empty
Guid.Empty
に比較することは私に特定の値についてのあなたのチェックが、レコードがであるかどうかという印象を与えます.NETで
default(Guid)
に相当しますデフォルト状態。
Guid.Empty
は、new Guid()
に相当し、default(Guid)
にも相当します。
Guid
構造を逆コンパイルすると、そのように見えます。 Guid
ので
public static readonly Guid Empty = new Guid();
Default Values Tableから、struct
あります。
すべての値タイプフィールドをデフォルトの 値とすべての参照タイプフィールドをnullに設定することによって生成される値です。
Guid
のフィールドタイプは、byte
、int
、short
ある(このタイプのデフォルト値は0
である)ので、私たちはdefault(Guid)
を使用するときに我々はすべてのフィールドでGuid
を取得するには、0
です。 Guid.Empty Field
値すべてゼロでのGuid構造の読み取り専用インスタンスから
。
このコードを書くとき、
Console.WriteLine(default(Guid));
Console.WriteLine(new Guid());
出力;
00000000-0000-0000-0000-000000000000
00000000-0000-0000-0000-000000000000
あなたが気にした場合、読みやすさ(私はあなたがすべきだと思うもの)Guid.Empty
は、私には良さそうです。
これは私が今まで作った中で最も不必要な説明です: –
どちらも同じです!
Guid.Empty
は、GUIDの読み取り専用フィールドで、値は{00000000-0000-0000-0000-000000000000}
です。
default(Guid)
を指定すると、コンパイルによって定数値({00000000-0000-0000-0000-000000000000}
)が作成されます。
いずれの場合も、値はメモリ内の別の値と比較されます。
可読性のためにGuid.Empty
を使用してください。
ジェネリックで作業する場合は、default(T)
を使用してください。
個人的には、可読性のためにGuid.Empty
を使用します。私が実際にdefault
を使用する唯一の時間は、例えばKeyValuePair
をチェックするときのような他のオプションがないときです。
あなたは、次を使用する必要があります。
var guidIsEmpty = value == Guid.Empty;
どちらが技術的にある正しい、しかし、間違いなくGuid.Emptyと比較すると、より可読コードになります。
私は、これは古いスレッドですけど、ちょうどチャイムしたい:
はメソッドのパラメータとしてのGUIDのデフォルト値を定義する場合、あなたは、GUIDではなく、デフォルト(GUID)を使用する必要があります.EmptyはGuid.Emptyがコンパイル時定数と見なされないためです。これは、コンパイルします:
private void MyMethod(Guid id = default(Guid))
これはコンパイルされません。
private void MyMethod(Guid id = Guid.Empty)
@Mekuriに感謝します。しかし、それは直接質問に答えません。あなたの投稿はコメントとしては素晴らしいですが、SOの点で回答になるほどの情報はありません。 –
- 1. cmake -D <var>:<type> = <value>:<type>は何ですか?
- 2. localStorage.prototypeは私が取得しています</p> <pre><code>localStorage.prototype.setItem2 = function(key,value) { localStorage.setItem(key,value); } </code></pre> <p>...
- 3. std :: set <VALUE、std :: owner_less <VALUE>>の目的は何ですか?
- 4. Heredoc <<<または<<?
- 5. <div>value</div>から価値を得るには?
- 6. aspxの<%:と<%=と<%#の違いは何ですか?
- 7. 私はこの</p> <pre><code>console.log(document.getElementsByClassName('value')[0].innerHTML); </code></pre> <p>を持っている他のページから
- 8. cout << coutとcout <<とcoutの違いは何ですか?
- 9. 1 << 0とは何ですか?
- 10. Gitは<<<<<<< HEADをファイルに追加し続けます
- 11. 「<%:」は何をしますか?</p> <pre><code><%: Model.FirstName %> </code></pre> <p>「<%:」何をん:行う
- 12. は、私は、これはメソッドに</p> <pre><code><tr><td><input type = "submit" value='Register'</td></tr> </code></pre> <p>を提出しているHTML
- 13. PHPで "<<< SQL"とは何ですか?
- 14. std :: cout << xの間のdiffrenceは何ですか;とstd :: cout << x << std :: endl ;?
- 15. カミソリ `if`は登録されていません開いている` <table>`タグがある場合は `}`を閉じますか?</p> <pre><code>if (true) { <table> <tbody> } ... if (true) { </tbody> </table> } </code></pre> <p>実行されません:レイザービューで
- 16. THREE.Camera.prototype.lookAt</ <() -</ <はどういう意味ですか?
- 17. Yiiは - CGridView - オプション<code>value</code>で
- 18. JSON要素は、私はEJSに初心者です、と私はここで、この</p> <pre><code><input class="form-control" id="inputName" type="text" <% { %>value='<%= JSON.stringify(result.firstname) %>'<% } %> </code></pre> <p>のように入力タグを持つ、印刷データが空である
- 19. Grailsのfalseを返すをisAttached</p> <pre><code>if(!musician.style.isAttached()){ musician.style.attach(); } </code></pre><p>コードレジスタを使用しようとすると()
- 20. メンバー関数のstd :: is_function?今</p> <pre><code>void f() { } int main() { std :: cout << std :: is_function <decltype(f)> :: value << std :: endl; // true } </code></pre> <p>、私は同じことを行いたい場合は何が起こるが、クラスのメソッドである機能を:
- 21. は私が</p> <pre><code><%= debug(params) if Rails.env.development? %> </code></pre> <p>を追加することが、なぜ</p> <pre><code><%= debug(params) if Rails.env.test? %> </code></pre> <p>が何か良いを行うことはありませんどのように理解し、デバッグが
- 22. PHP <<< OUTとOUT;
- 23. Cに名前のない関数を持たせることはできますか?</p> <pre><code>(_s, m); </code></pre> <p><em>_s</em>と<em>メートル</em>は、両方の構造は、それが何をすることができます:?
- 24. とNullReferenceException何がnull <code>Sessions</code>が<code>Dictionary<Guid, WebSession></code>ある
- 25. connection.Close()とconnection.Dispose()の違いは何ですか? <code>SQLiteDataReader</code>オブジェクトの</p> <ul> <li><code>Close()</code></li> <li><code>Dispose()</code></li> </ul> <p>同じ:
- 26. << CONSTANTは何をしますか?
- 27. Perlの文字列の乗算がundefで警告しないのはなぜですか?</p> <pre><code>$foo . '' </code></pre> <p>と</p> <pre><code>"$foo" </code></pre> <p>
- 28. </p> <pre class="lang-html prettyprint-override"><code><input type="text" data-bind="value: nextName"> </code></pre> <p>観察可能なInternet Explorerの
- 29. boost :: optionalの比較(<)、出力(<<)と代入(=)
- 30. チェック:「</p> <pre><code>... if ($(this:enabled)){ //some code } ... </code></pre> <p>私は通常、あなたを知っている:jQueryの
うーん...何をチェックしようとしていますか? – Oded
2番目の例で 'unassignedローカル変数 'value''を使用しています – Default
' default(Guid)== Guid.Empty' – Oded