2011-02-14 11 views
12

क्या किसी विधि को तर्कों की एक चर संख्या भेजना संभव है?मैं एक सी # विधि कैसे लिखूं जो तर्कों की एक चर संख्या लेता है?

उदाहरण के लिए यदि मैं एक ऐसी विधि लिखना चाहता हूं जो कई string[] ऑब्जेक्ट्स को एक स्ट्रिंग में जोड़ देगा, लेकिन मैं चाहता हूं कि यह जानने के बिना कि मैं कितना पास करना चाहता हूं, मैं यह कैसे करूँगा?

+0

आप एक आईनेमरेबल क्यों नहीं पारित करेंगे? – JohnOpincar

+0

उस अनंत डेटा संरचना को फिर से शुरू करने में कुछ समय लग रहा है ... – Kurru

+0

शीर्षक शायद अनंत के विपरीत वैरिएबल कह सकता है। – JohnOpincar

उत्तर

19

आप ऐसा चाहते हैं के रूप में:

string result = ConcatString("Foo", "Bar", "Baz"); 

के लिए:

string ConcatString(params string[] arguments) 
{ 
    // Do work here 
} 

इस रूप में कहा जा सकता है विवरण, params (C# Reference) देखें।


FYI करें - वहां पहले से ही एक String.Concat(params object[] args) है - यह प्रत्येक पर ToString() कॉल करके वस्तुओं के किसी सेट को श्रेणीबद्ध होगा। तो इस विशिष्ट उदाहरण के लिए, शायद यह वास्तव में उपयोगी नहीं है।

0

अभ्यास में, अनंत - नहीं (उदाहरण के लिए स्मृति की एक सीमित राशि उपलब्ध है)।

डिज़ाइन-समय पर अज्ञात, हां।

इसका क्लासिक उदाहरण यह है कि इसे कंसोल एप्लिकेशन पर कैसे प्रबंधित किया जाता है।

http://dotnetperls.com/main

http://msdn.microsoft.com/en-us/library/cb20e19t(VS.71).aspx

5

Use the params keyword ऐसा करने के लिए:

public static string ConvertToOneString(params string[] list) 
{ 

    string result = String.Empty; 
    for (int i = 0 ; i < list.Length ; i++) 
    { 
     result += list[i]; 
    } 
    return result; 
} 

उपयोग:

string s = "hello" 
string a = "world" 
string result = ConvertToOneString(s, a); 
2

हां, तो आप params कि

के लिए उपयोग कर सकते हैं
1

आप अनंत का मतलब नहीं है (उस प्रश्न का उत्तर नहीं है) लेकिन आप 'चर' का मतलब है। http://blogs.msdn.com/b/csharpfaq/archive/2004/08/05/209384.aspx

+0

डाउनवोट क्यों? शायद मतदाता को प्रश्न का इतिहास नहीं देखा। यदि ऐसा है, तो कृपया डाउनवोट की समीक्षा करें और हटाएं यदि आप चाहते हैं। – Joe

2

उपयोग params:: यहाँ अपने जवाब (हाँ) है

void YourMethod(params string[] infiniteArgs) { } 
3

बहुत params कीवर्ड

void ConcatString(params String[] strArray) 
{ 
    foreach (String s in strArray) 
    { 
     // do whatever you want with all the arguments here... 
    } 
} 
4

का उपयोग कर आप आसानी से एक विधि है कि (शून्य सहित) तर्कों की एक मनमाना संख्या लेता है बना सकते हैं, params कीवर्ड का उपयोग ऐसा करने के लिए आसान:

public static void UseParams(params int[] list) 
{ 
    for (int i = 0; i < list.Length; i++) 
     Console.Write(list[i] + " "); 
} 

आप पैरामीटर की सूची के बजाय इस विधि में एक सरणी भी पास कर सकते हैं, और विधि बिल्कुल वही काम करेगी।

2
string MyConcat(params string[] values) 
{ 
    var s = new StringBuilder(); 
    foreach (var v in values) 
     s.Append(v); 
    return s.ToString(); 
} 
संबंधित मुद्दे