2012-03-23 30 views
66

यह मैं सोच क्यों .NET में Guid IsNullOrEmpty() विधि नहीं है (जहां खाली साधन सब शून्य)क्यों दिया गया Guid.IsNullOrEmpty() विधि

मैं अपने एएसपी में कई स्थानों पर इस की जरूरत रहती है नहीं है। आरईएसटी एपीआई लिखते समय नेट एमवीसी कोड।

या क्या मुझे कुछ याद आ रहा है क्योंकि इंटरनेट पर किसी ने भी इसके लिए नहीं पूछा है?

+0

http://stackoverflow.com/questions/2344213/is-guid-considered-a-value को शुरू करने के लिए अलग-अलग नाम के साथ आएं -प्रकार-या-संदर्भ-प्रकार लेकिन आपकी ज़रूरतों के लिए 'Guid.Empty' – V4Vendetta

उत्तर

163

Guidvalue type है, इसलिए Guid प्रकार का एक चर प्रारंभ करने के लिए शून्य नहीं हो सकता है। आप अगर यह खाली GUID की तरह ही है जानना चाहते हैं, तो आप सिर्फ उपयोग कर सकते हैं:

if (guid == Guid.Empty) 
+0

उन मामलों के बारे में क्या है जहां एंटीटी फ्रेमवर्क गइड वैरिएबल को GUID के रूप में परिभाषित करता है? (नल)? –

+4

@ गॉथ्स: फिर आप 'if (nullableGuid == null || nullableGuid == guid.Empty)' का उपयोग कर सकते हैं ... या यदि आप वास्तव में चाहते हैं तो अपनी खुद की एक्सटेंशन विधि बनाएं। संभवतः यह शायद ही कभी पर्याप्त है कि ज्यादातर लोगों के लिए यह लायक नहीं है। –

+0

ठीक है शांत। धन्यवाद। तो मैं सही दिशा में जा रहा हूं :) –

22

एक बात के लिए, Guid नल नहीं है। आप जांच कर सकता है:

myGuid == Guid.Empty 
1

आपको GUID के लिए एक विस्तार विधि बना सकते हैं IsEmpty कार्यक्षमता जोड़ने के लिए:

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 = guid.NewGuid()' लिखना चाहते थे? –

+1

@ डेविड हेडलंड इसके लिए धन्यवाद, अपडेट किया गया। – SimpleVar

5

यहाँ के लिए एक सरल विस्तार विधि है

myGuid == default(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); 
} 

अद्यतन

आप वास्तव में इस का उपयोग करने के लिए हर जगह आप एक नियमित Guid के लिए एक और विस्तार विधि लिख सकता है चाहता है तो। यह कभी भी शून्य नहीं हो सकता है, इसलिए कुछ लोगों को यह पसंद नहीं आएगा ... लेकिन यह उस उद्देश्य को पूरा करता है जिसे आप ढूंढ रहे हैं और आपको यह नहीं पता कि आप ग्विड के साथ काम कर रहे हैं या नहीं? या Guid (पुनः फैक्टरिंग आदि के लिए अच्छा)।

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

अब आप सभी मामलों में someGuid.IsNullOrEmpty(); इस्तेमाल कर सकते हैं, चाहे आपको GUID या Guid उपयोग कर रहे हैं ?.

जैसा कि मैंने कहा, कुछ लोग नामकरण के बारे में शिकायत करेंगे क्योंकि IsNullOrEmpty() का तात्पर्य है कि मान शून्य हो सकता है (जब यह नहीं हो सकता है)। यदि आप वास्तव में चाहते थे, तो IsNothing() या IsInsignificant() या जो कुछ भी हो :)

संबंधित मुद्दे