मुझे आज सी # के साथ कुछ सामना करना पड़ा जिसे मैंने पहले नहीं सोचा था। मेरे पास मेरी कक्षा में दो विधियां हैं, एक दूसरे का अधिभार है। वे इतने तरह की घोषणा की जाती:सी # पैराम्स एक ही प्रकार के दो पैरामीटर के साथ कीवर्ड
1) public void RequirePermissions(params string[] permissions)...
2) public void RequirePermissions(string message, params string[] permissions)...
मेरे कोड में, मैं तो जैसे पहले एक कॉल करने की कोशिश:
RequirePermissions("Permission1", "Permission2");
... यह उम्मीद पहले अधिभार कॉल करने के लिए। वैसे यह दूसरा अधिभार कहा जाता है। एक ही रास्ता मैं इसे इस मामले में पहली विधि कॉल करने के लिए प्राप्त कर सकते हैं मैन्युअल रूप से इस तरह की स्ट्रिंग [] वस्तु पारित करने के लिए है:
RequirePermissions(new string[] { "Permission1", "Permission2" });
अब, यह व्यवहार मुझे भ्रमित नहीं है क्योंकि मैं समझता हूँ कि संकलक कर सकते हैं यह नहीं बताएं कि मैं वास्तव में मेरे प्रदत्त पैरामीटर के आधार पर कौन सी विधि कॉल करना चाहता हूं। लेकिन क्या मुझे सावधान नहीं था कि यह मेरे कोड में अनजान हो सकता था। ऐसा लगता है कि माइक्रोसॉफ्ट को कंपाइलर को एक त्रुटि को फेंकना चाहिए था जब इसे ऊपर की स्थिति का सामना करना पड़ा था। क्या किसी के पास इस बारे में कोई विचार है? क्या मैंने पोस्ट किए गए "समाधान" के अलावा पहले अधिभार को कॉल करने का कोई और तरीका है?
यहां एक नज़र डालें- http://ayende.com/Blog/archive/2007/12/31/Tricky-Code.aspx और यहां- http: //www.yoda.arachsys ।com/csharp/teasers.html (संख्या 6) – RichardOD
मैं आपके सुझाव से थोड़ा उलझन में हूं। क्या आपको लगता है कि चेतावनी अस्पष्ट * कॉल *, या * घोषणाओं * के सेट पर होनी चाहिए जो एक अस्पष्ट कॉल का कारण बन सकती है? –