2010-08-07 14 views

उत्तर

24

इस अशक्त-कोलेसिंग ऑपरेटर के रूप में जाना जाता है और यह निम्नलिखित के रूप में कार्य करता है, मान a एक नल पूर्णांक है और b एक सामान्य पूर्णांक

है
b = a ?? 1; 

b = (a != null ? (int)a : 1); 
के बराबर है

जो

if(a != null) 
    b = (int)a; 
else 
    b = 1; 
इसलिए

public NameValueCollection Metadata 
{ 
    get { return metadata ?? (metadata = new NameValueCollection()); } 
} 

का विस्तार इस

public NameValueCollection Metadata 
{ 
    get 
    { 
     if(metadata == null) 
      return (metadata = new NameValueCollection()); 
     else 
      return metadata; 
    } 
} 

जो एक एक लाइनर सिंगलटन पैटर्न के कुछ प्रकार है की तरह कुछ की तरह दिखना चाहिए के बराबर है, क्योंकि गेटर रिटर्न प्रत्येक बार अनुरोध किए जाने पर मेटाडेटा (प्रारंभिक नाम वैल्यू कोलेक्शन ऑब्जेक्ट), उस समय पहली बार उम्मीद है कि यह उस बिंदु पर शून्य है, इसलिए यह इसे प्रारंभ करता है और फिर इसे वापस कर देता है। यह विषय बंद है लेकिन ध्यान दें कि सिंगलटन पैटर्न के लिए यह दृष्टिकोण थ्रेड-सुरक्षित नहीं है।

0

यह सम्मिलित ऑपरेटर, यह शून्य के लिए जाँच करता है।

statement ?? fallback यदि कथन null पर मूल्यांकन करता है, fallback का उपयोग किया जाता है। msdn देखें।

-1

?? अशक्त कोलेसिंग ऑपरेटर

पढ़ें इसके बारे में यहाँ है: link text

+0

downvote क्योंकि कोई स्पष्टीकरण पर

X = (if Y is not null return Y) ?? (else return DEFAULT) 

पढ़ें विस्तृत चर्चा। – problemofficer

4

?? Operator (C# Reference)

?? ऑपरेटर को नल-कोलेसिंग ऑपरेटर कहा जाता है और का उपयोग शून्य मूल्य मान के साथ-साथ संदर्भ प्रकारों के लिए डिफ़ॉल्ट मान को परिभाषित करने के लिए किया जाता है। यह बाएं हाथ के ऑपरेंड देता है यदि यह शून्य नहीं है; अन्यथा यह सही ऑपरेंड देता है।

आपका उदाहरण के रूप में फिर से लिखा जा सकता है:

public NameValueCollection Metadata 
    { 
    get { 
      if (metadata == null) 
       metadata = new NameValueCollection(); 

      return metadata; 
     } 
    } 
0

?? ऑपरेटर को नल-कोलेसिंग ऑपरेटर कहा जाता है और इसका उपयोग एक शून्य मान प्रकार के साथ-साथ संदर्भ प्रकारों के लिए डिफ़ॉल्ट मान को परिभाषित करने के लिए किया जाता है। यह बाएं हाथ के ऑपरेंड देता है अगर यह शून्य नहीं है; अन्यथा यह सही ऑपरेंड देता है।

http://msdn.microsoft.com/en-us/library/ms173224.aspx

2
MSDN से

: http://msdn.microsoft.com/en-us/library/ms173224.aspx

एक नल प्रकार एक मूल्य के शामिल कर सकते हैं, या यह अपरिभाषित हो सकता है। ?? ऑपरेटर डिफ़ॉल्ट मान को वापस करने के लिए परिभाषित करता है जब एक शून्य प्रकार को गैर-शून्य प्रकार के लिए असाइन किया जाता है। यदि आप बिना किसी गैर-शून्य मूल्य प्रकार को शून्य के मूल्य प्रकार को असाइन करने का प्रयास करते हैं ?? ऑपरेटर, आप संकलन-समय त्रुटि उत्पन्न करेंगे। यदि आप एक कास्ट का उपयोग करते हैं, और शून्य मूल्य मान वर्तमान में अपरिभाषित है, तो एक अवैधऑपरेशन अपवाद अपवाद फेंक दिया जाएगा।

class NullCoalesce 
{ 
static int? GetNullableInt() 
{ 
    return null; 
} 

static string GetStringValue() 
{ 
    return null; 
} 

static void Main() 
{ 
    // ?? operator example. 
    int? x = null; 

    // y = x, unless x is null, in which case y = -1. 
    int y = x ?? -1; 

    // Assign i to return value of method, unless 
    // return value is null, in which case assign 
    // default value of int to i. 
    int i = GetNullableInt() ?? default(int); 

    string s = GetStringValue(); 
    // ?? also works with reference types. 
    // Display contents of s, unless s is null, 
    // in which case display "Unspecified". 
    Console.WriteLine(s ?? "Unspecified"); 
} 

}

+0

यदि आप एमएसडीएन उद्धृत करने जा रहे हैं, तो कृपया एक लिंक प्रदान करें। – strager

1

यह शून्य चर के मामले में डिफ़ॉल्ट मान से प्रतिस्थापित करने का प्रयोग किया जाता है। How useful is C#'s ?? operator?

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