2017-08-11 30 views
-1

如何在[可選]中使用params關鍵字?
我想同時使用關鍵字PARAMS和可選的,但它引發錯誤如何使用params關鍵字與[可選]?

public void m(int x,[Optional] int c,params string [] arr) 
{ 
    Console.WriteLine("x= {0}", x);   
    foreach (string item in arr) 
    { 
     Console.WriteLine("name ={0}\n",item); 
    } 
    public static void Main(){ 
    Program x = new Program(); 
    x.m(10,"mido","sfs","sgsd"); // here error why? 
} 
+0

什麼是錯誤您收到? – Pratyay

+1

當您調用該方法時,不能選擇不給出可選參數('c')的參數,而是爲隨後的參數提供參數。 –

+0

更好的解決方案是使用兩種方法,一種使用可選參數(這將不是可選的),另一種不使用 –

回答

0

我不這麼認爲關鍵字,但是如果你傳遞可選的參數給你的類,你需要設置默認值。另外,要記住的是可選參數不可以可以跟着非可選參數。在你的例子中,你的可選參數之後是一個非可選的字符串數組。

一個例子:

public void ExampleMethod(int required, string optionalstr = "default string", 
    int optionalint = 10) 

瞭解更多:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/named-and-optional-arguments

+0

可選參數不能跟隨非可選參數,這是這裏的問題。 – juharr

+0

@juharr我的示例按需要,可選和可選的順序包含3個參數。再看一遍。這甚至不是我的例子。這是直接從MSDN。 –

+0

您的示例沒有問題,但請注意,OP在可選參數後面有一個非可選參數。 – juharr