मैंने जावा और नई। नेट तकनीक पर काम किया है
क्या C # में एक फ़ंक्शन घोषित करना संभव है जो चर इनपुट मापदंडों को स्वीकार करता है
क्या निम्न जावा सिंटैक्स के समान कोई C # सिंटैक्स है?
void f1(String... a)
मैंने जावा और नई। नेट तकनीक पर काम किया है
क्या C # में एक फ़ंक्शन घोषित करना संभव है जो चर इनपुट मापदंडों को स्वीकार करता है
क्या निम्न जावा सिंटैक्स के समान कोई C # सिंटैक्स है?
void f1(String... a)
जवाबों:
हां, C # में वैरैगस पैरामीटर्स के बराबर है। उन्हें पैरामीटर सरणियाँ कहा जाता है , और paramsसंशोधक के साथ पेश किया जाता है :
public void Foo(int x, params string[] values)
फिर इसके साथ कॉल करें:
Foo(10, "hello", "there");
जावा के साथ के रूप में, यह केवल अंतिम पैरामीटर है जो इस तरह भिन्न हो सकता है। ध्यान दें कि (जावा के साथ) एक पैरामीटर params object[] objectsआसानी से भ्रम पैदा कर सकता है, क्योंकि आपको यह याद रखने की आवश्यकता है कि प्रकार object[]का एक भी तर्क फिर से लपेटने के लिए है या नहीं। इसी तरह किसी भी अशक्त प्रकार के लिए, आपको यह याद रखने की आवश्यकता है कि क्या किसी एकल तर्क nullको एक सरणी संदर्भ या एकल सरणी तत्व माना जाएगा। (मुझे लगता है कि कंपाइलर केवल सरणी बनाता है अगर यह करना है, लेकिन मैं कोड लिखना चाहता हूं जो मुझे याद रखने से बचता है।)
परम्स पर एक नज़र डालें (C # संदर्भ)
Params कीवर्ड आपको एक विधि पैरामीटर निर्दिष्ट करने देता है जो एक चर संख्या तर्क लेता है।
आप पैरामीटर घोषणा में निर्दिष्ट प्रकार के तर्कों, या निर्दिष्ट प्रकार के तर्कों की एक अल्पविराम से अलग सूची भेज सकते हैं। आप कोई तर्क भी भेज सकते हैं।
एक विधि घोषणा में परमस कीवर्ड के बाद किसी अतिरिक्त पैरामीटर की अनुमति नहीं है, और एक विधि घोषणा में केवल एक ही परम खोजशब्द की अनुमति है।
जैसा कि उदाहरण में दिखाया गया है कि विधि के रूप में घोषित किया गया है
public static void UseParams(params int[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
}
और के रूप में इस्तेमाल किया
UseParams(1, 2, 3, 4);