簡體   English   中英

如何編寫一個帶有可變數量參數的C#方法?

[英]How do I write a C# method that takes a variable number of arguments?

是否可以向方法發送可變數量的參數?

例如,如果我想編寫一個將許多string[]對象連接成一個字符串的方法,但是我希望它能夠接受參數而不知道我想傳遞多少個,我該怎么做?

你會這樣做:

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

這可以稱為:

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

有關詳細信息,請參閱參數(C#參考)


僅供參考 - 已經存在String.Concat(params object[] args) - 它將通過在每個對象上調用ToString()來連接任何對象集。 因此,對於這個具體的例子,這可能不是那么有用。

使用params關鍵字來做到這一點:

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);

您可以使用params關鍵字輕松創建一個采用任意數量參數(包括零)的params

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

您甚至可以將數組傳遞給此方法而不是參數列表,並且該方法將完全相同。

使用params關鍵字很容易做到這一點

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

是的,你可以使用參數

使用params

void YourMethod(params string[] infiniteArgs) { }
string MyConcat(params string[] values)
{
    var s = new StringBuilder();
    foreach (var v in values)
       s.Append(v);
    return s.ToString();
}

你並不意味着無限(這個問題的答案是否定的),但你的意思是“變量”。 這是你的答案(是): http//blogs.msdn.com/b/csharpfaq/archive/2004/08/05/209384.aspx

在實踐中,無限 - 不(例如,有可用的有限數量的內存)。

在設計時未知,是的。

這方面的經典示例是如何在控制台應用程序上處理它。

http://dotnetperls.com/main

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM