मैं पिछले हफ्ते में कई बार आ चुके हैं, और कारण जानने के लिए उत्सुक हूँ - मैं एक गूगल की थी, लेकिन कुछ भी सीधे प्रासंगिक नहीं पा सके।विधि अधिभार स्थिर + डायनामिक विफल रहता है
मैं एक गतिशील विधि के साथ एक वर्ग है, और मैं एक ही इंटरफेस के साथ एक स्थिर विधि जोड़ सकते हैं:
public class MyClass
{
public int MyMethod()
{
//do something #1;
}
public static int MyMethod()
{
//do something
}
}
यह ठीक है, लेकिन अगर मैं गतिशील विधि से स्थिर विधि कॉल करने का प्रयास करें, return MyClass.MyMethod()
साथ # 1 की जगह, मैं कोई त्रुटि मिलती है "। कॉल निम्न विधियों या गुणों के बीच अस्पष्ट है: MyClass.MyMethod() और MyClass.MyMethod()
स्थिर विधि को नष्ट कर दिया है, तो त्रुटि परिवर्तन करने के लिए" एक वस्तु संदर्भ की आवश्यकता है .. "है, जो समझ में आता है।
तो क्यों इस Ambigu है ous? इसे स्थिर विधि निर्दिष्ट करने के लिए कक्षा के नाम से पहले रखा गया है, जो कोड में कहीं और से काम करता है।
क्यों नहीं?
संपादित करें: मैंने वास्तव में गतिशील विधि को कॉल करने के बिना इसे संकलित करने की कोशिश नहीं की थी, मैं बस वीएस द्वारा इसे रेखांकित नहीं कर रहा था।
लेकिन फिर भी एक ऐसी ही सवाल मुझे लगता है, लेकिन एक साथ कहा, "क्यों दोनों नहीं हो सकता है, के रूप में एक स्थिर है, और एक नहीं"
आप के लिए संकलन दिया कोड है? यह मेरे लिए त्रुटि CS0111 फेंकता है (पहले से ही उसी पैरामीटर प्रकार के साथ 'MyMethod' नामक एक सदस्य को परिभाषित करता है)। – prashanth
यह एक अजीब (गलत) त्रुटि संदेश है, लेकिन शायद यह उस क्रम के कारण है जिसमें संकलक संदर्भ को हल करने और सत्यापित करने का प्रयास करता है। – McGarnagle
@prashanth आप सही हैं। मैंने एक धारणा की थी - संपादन देखें। – 3Pi