क्या कोई इसका उदाहरण प्रदान कर सकता है?सी # - खाली पैरामीटर <string> वैकल्पिक पैरामीटर के रूप में कैसे उपयोग करें
मैं null
, string.Empty
और वस्तु प्रारंभ की कोशिश की है लेकिन जब से डिफ़ॉल्ट मान संकलन समय
क्या कोई इसका उदाहरण प्रदान कर सकता है?सी # - खाली पैरामीटर <string> वैकल्पिक पैरामीटर के रूप में कैसे उपयोग करें
मैं null
, string.Empty
और वस्तु प्रारंभ की कोशिश की है लेकिन जब से डिफ़ॉल्ट मान संकलन समय
उपयोग कर रहा हूँ बस अशक्त कोलेसिंग ऑपरेटर और खाली सूची का एक उदाहरण का उपयोग
public void Process(string param1, List<string> param2 = null) {
param2 = param2 ?? new List<String>();
}
इस के साथ समस्या यह है कि "param2" शून्य है अगर और आप एक नया संदर्भ असाइन करते हैं तो यह कॉलिंग संदर्भ में पहुंच योग्य नहीं होगा।
+1 जो मैं करता हूं और यह तेज़ है! –
अच्छा विचार। (आप "नया" गायब हैं जहां से आप सूची बनाते हैं) – heisenberg
हाँ, धन्यवाद। मैंने पोस्ट संपादित किया है। – Vasea
आप new List<string>()
का इस्तेमाल किया है पर स्थिर हो गया है कि वे काम नहीं करते?
नहीं एक संकलन समय निरंतर। – Domenic
यह असंभव है। आपको इसके बजाय विधि अधिभार का उपयोग करना चाहिए।
public static void MyMethod(int x, List<string> y) { }
public static void MyMethod(int x)
{
MyMethod(x, Enumerable<string>.Empty());
}
यह असंभव नहीं है: http://msdn.microsoft.com/en-us/library/dd264739.aspx –
डिफ़ॉल्ट मान के रूप में एक खाली सूची जैसे निरंतर गैर-संकलन समय होना असंभव है। मुझे पता है कि आप सी # में पैरामीटर के लिए डिफ़ॉल्ट मानों का उपयोग कर सकते हैं, जाहिर है ... – Domenic
हालांकि, यह एकमात्र समाधान होगा या 4.0 से पहले सी # संस्करण का उपयोग करने वाला कोई भी होगा। – shmeeps
तुम भी निम्न default
जो एक संकलन समय-स्थिर है (null
एक List<T>
के मामले में) का उपयोग कर सकते हैं:
void DoSomething(List<string> lst = default(List<string>))
{
if (lst == default(List<string>)) lst = new List<string>();
}
मेरे मामले में सबसे अच्छा समाधान! – MozzieMD
आप इस कोशिश की "" – raym0nd