2012-03-23 6 views
66

これは.NETのGUIDが、私は私のASPでのいくつかの場所でこれを必要とするIsNullOrEmpty()方法(空の手段すべてゼロ)なぜGuid.IsNullOrEmpty()メソッド

を持っていない理由を不思議私を続けているがありません。 REST APIを記述するときの.NET MVCコード

インターネット上の誰も同じものを求めていないので、何か不足していますか?

+0

開始するにはhttp://stackoverflow.com/questions/2344213/is-guid-considered-a-value型または参照型ですが、あなたのニーズには 'Guid.Empty'があります – V4Vendetta

答えて

163

Guidは、Guidの変数がnullで始めることができないため、value typeです。あなたはそれが空のGUIDと同じかどうかを知りたい場合は、あなただけ使用することができます。一つには、GuidがNULL可能でない

if (guid == Guid.Empty) 
+0

Entity FrameworkがGuid変数をGuidとして定義するケースはどうでしょうか? (ヌル可能)? –

+4

@ goths:もしあなたが本当に望むならば、あなたは 'if(nullableGuid == null || nullableGuid == Guid.Empty)'を使うことができます。たぶんそれはほとんどの人にとって価値がないとは思えないほどです。 –

+0

ありがとう。だから私は正しい方向に行っています:) –

22

。あなたはチェックすることができます:あなたはのisEmpty機能を追加するGUIDに拡張メソッドを作ることができます

myGuid == Guid.Empty 
1

:と同等です

myGuid == default(Guid) 

ここ

public static class GuidEx 
{ 
    public static bool IsEmpty(this Guid guid) 
    { 
     return guid == Guid.Empty; 
    } 
} 

public class MyClass 
{ 
    public void Foo() 
    { 
     Guid g; 
     bool b; 

     b = g.IsEmpty(); // true 

     g = Guid.NewGuid(); 

     b = g.IsEmpty; // false 

     b = Guid.Empty.IsEmpty(); // true 
    } 
} 
+0

' g = new Guid() 'は実際には空のGUIDを作成します。 'g = Guid.NewGuid()'と書くつもりでしたか? –

+1

@DavidHedlundありがとう、ありがとう。 – SimpleVar

5

はのための単純な拡張メソッドでありますnull可能なGuid。

/// <summary> 
/// Determines if a nullable Guid (Guid?) is null or Guid.Empty 
/// </summary> 
public static bool IsNullOrEmpty(this Guid? guid) 
{ 
    return (!guid.HasValue || guid.Value == Guid.Empty); 
} 

UPDATE

あなたが本当にどこにでもあなたが定期のGUIDのために別の拡張メソッドを書くことができ、これを使用したい場合。ヌルにすることはできませんので、これを気に入らない人もいます...しかし、それはあなたが探している目的に役立ち、あなたがGuidで作業しているかどうかを知る必要はありませんか?やGUID(リファクタリングなどに便利です)。

/// <summary> 
/// Determines if Guid is Guid.Empty 
/// </summary> 
public static bool IsNullOrEmpty(this Guid guid) 
{ 
    return (guid == Guid.Empty); 
} 

今あなたがGUIDまたはGUIDを使用しているかどうか、すべてのケースでsomeGuid.IsNullOrEmpty();を使用することができます?。

私が言ったように、IsNullOrEmpty()は値がnullである可能性があることを暗示しているため、名前の付け方について不平を言う人もいます。本当にしたい場合は、IsNothing()またはIsInsignificant()などの別の名前を付けてください。

関連する問題