c# - डिफ़ॉल्ट(वस्तु) क्या करता है; सी#में करते हैं?




(5)

प्रकार पैरामीटर का डिफ़ॉल्ट मान निर्दिष्ट करता है। यह संदर्भ प्रकारों के लिए शून्य होगा और मान प्रकारों के लिए शून्य होगा।

default देखें

गुगलिंग केवल खोजशब्द के साथ आ रही है, लेकिन मैं कहता हूं कि कुछ कोड में ठोकर खाई गई है

MyVariable = default(MyObject);

और मैं सोच रहा हूं कि इसका क्या अर्थ है ...


यह ऑब्जेक्ट का डिफ़ॉल्ट मान एक चर पर सेट करेगा: संदर्भ प्रकारों के लिए शून्य और मूल्य प्रकारों के लिए 0।


MyObject का डिफ़ॉल्ट मान। जेनेरिक कोड (सी # प्रोग्रामिंग गाइड) (एमएसडीएन) में डिफ़ॉल्ट कीवर्ड देखें:

जेनेरिक वर्गों और विधियों में, उत्पन्न होने वाली एक समस्या यह है कि पैरामीटरयुक्त प्रकार टी को डिफ़ॉल्ट मान कैसे असाइन करना है जब आप निम्न में पहले से नहीं जानते हैं:

  • चाहे टी संदर्भ प्रकार या मूल्य प्रकार होगा।
  • यदि टी एक मान प्रकार है, चाहे वह एक संख्यात्मक मूल्य या संरचना हो।

पैरामीटरयुक्त प्रकार टी के एक वेरिएबल टी को देखते हुए, कथन टी = नल केवल तभी वैध है जब टी संदर्भ प्रकार है और टी = 0 केवल संख्यात्मक मान प्रकारों के लिए काम करेगा, लेकिन structs के लिए नहीं। समाधान डिफ़ॉल्ट कीवर्ड का उपयोग करना है, जो संदर्भ प्रकारों के लिए शून्य और संख्यात्मक मान प्रकारों के लिए शून्य लौटाएगा। Structs के लिए, यह मूल्य या संदर्भ प्रकार के आधार पर शून्य या शून्य के लिए शुरू की गई संरचना के प्रत्येक सदस्य को वापस कर देगा। जेनेरिकलिस्ट क्लास का निम्न उदाहरण दिखाता है कि डिफ़ॉल्ट कीवर्ड का उपयोग कैसे करें। अधिक जानकारी के लिए, जेनेरिक अवलोकन देखें।

public class GenericList<T>
{
    private class Node
    {
        //...

        public Node Next;
        public T Data;
    }

    private Node head;

    //...

    public T GetNext()
    {
        T temp = default(T);

        Node current = head;
        if (current != null)
        {
            temp = current.Data;
            current = current.Next;
        }
        return temp;
    }
}

default कीवर्ड अनुरोधित प्रकार के चर के लिए "डिफ़ॉल्ट" या "खाली" मान देता है।

सभी संदर्भ प्रकारों के लिए ( class , delegate , आदि के साथ परिभाषित), यह null । मूल्य प्रकारों ( struct , enum , आदि के साथ परिभाषित) के लिए यह एक शून्य-शून्य मान है (उदाहरण के लिए, int 0 , DateTime 0001-01-01 00:00:00 , आदि)।

इसका उपयोग जेनेरिक कोड के साथ किया जाता है जिसे संदर्भ और मूल्य प्रकार दोनों पर लागू किया जा सकता है, क्योंकि आप किसी मान प्रकार चर के लिए null निर्दिष्ट नहीं कर सकते हैं।


  • संदर्भ-प्रकार के लिए, यह null
  • Nullable<T> अलावा किसी मान-प्रकार के लिए यह शून्य-प्रारंभिक मान देता है
  • Nullable<T> यह खाली (छद्म-शून्य) मान देता है (वास्तव में, यह दूसरी बुलेट का पुनः बयान है, लेकिन यह स्पष्ट करने लायक है)

default(T) का सबसे बड़ा उपयोग जेनेरिक में है, और Try... तरह चीजें Try... पैटर्न:

bool TryGetValue(out T value) {
    if(NoDataIsAvailable) {
        value = default(T); // because I have to set it to *something*
        return false;
    }
    value = GetData();
    return true;
}

जैसे ही होता है, मैं इसे कुछ कोड-पीढ़ी में भी उपयोग करता हूं, जहां फ़ील्ड / वेरिएबल्स को शुरू करने में दर्द होता है - लेकिन यदि आप इस प्रकार को जानते हैं:

bool someField = default(bool);
int someOtherField = default(int)
global::My.Namespace.SomeType another = default(global::My.Namespace.SomeType);



c#  

c#