c# - जब तर्क निरर्थक होता है तो अस्पष्टता को कैसे हल करें?




null ambiguous-call (4)

आप उन दोनों में से किसी को भी अशक्त डालने में सक्षम होना चाहिए, जैसा कि आप एक चर Func((Class1)null)

निम्न कोड एकत्रित करना वापस आ जाएगा The call is ambiguous between the following methods or properties त्रुटि के The call is ambiguous between the following methods or properties । इसे कैसे हल करें, क्योंकि मैं स्पष्ट रूप से उन कक्षाओं में से किसी को null परिवर्तित नहीं कर सकता?

static void Main(string[] args)
{
    Func(null);
}

void Func(Class1 a)
{

}

void Func(Class2 b)
{

}

आप भी एक चर का उपयोग कर सकते हैं:

Class1 x = null;
Func(x);

Func() विधियों एक संदर्भ प्रकार एक पैरामीटर के रूप में स्वीकार करते हैं, जो कि शून्य हो सकता है। चूंकि आप एक स्पष्ट null मान के साथ विधि को बुला रहे हैं, संकलक यह नहीं जानता कि क्या आपकी नल Class1 ऑब्जेक्ट या Class1 ऑब्जेक्ट के संदर्भ में है या नहीं।

आपके पास दो विकल्प हैं:

Class2 Func((Class1)null) या Func((Class2)null) Func((Class1)null) रूप में या तो Class1 या Class1 प्रकार के लिए अशक्त को कास्ट करें

Func() विधि का एक नया अधिभार प्रदान करें जो कोई पैरामीटर स्वीकार नहीं करता है, और उस अधिभार को कॉल करते हैं जब आपके पास स्पष्ट ऑब्जेक्ट संदर्भ नहीं होता है:

void Func()
{
    // call this when no object is available
}

Func((Class1)null);




ambiguous-call