所以我有一個功能如何設置這些功能的輸入是必需的,哪些不是(C#)
public int Sum(var valueA, var valueB, var valueC) {
var summ = valueA + valueB;
return summ;
}
我想要添加到薩姆valueC如果它被賦予。讓用戶不要指定它,如果他不想。如何做這樣的事情?
所以我有一個功能如何設置這些功能的輸入是必需的,哪些不是(C#)
public int Sum(var valueA, var valueB, var valueC) {
var summ = valueA + valueB;
return summ;
}
我想要添加到薩姆valueC如果它被賦予。讓用戶不要指定它,如果他不想。如何做這樣的事情?
除了肖恩富爾默提供,您還可以使用params關鍵字有一個函數,採用可變數量的參數選項:如果你想
public int Sum(params int[] values)
{
int sum = 0;
for(int i = 0; i < values.Length; i++){
sum+=values[i];
}
return sum;
}
int answer2Parameters = Sum(1, 5);
int answer3Parameters = Sum(1, 2, 3);
int answer4Parameters = Sum(1, 3, 5, 6);
當然要限制他們確切地兩個或三個,那麼你可能想在C#4.0中查看可選參數或重載Sum函數 - 我的意思是創建兩個Sum函數,一個需要兩個參數,另一個需要3個參數。
public int Sum(int valueA, int valueB) {
int summ = valueA + valueB;
return summ;
}
public int Sum(int valueA, int valueB, int valueC) {
int summ = valueA + valueB + valueC;
return summ;
}
以及如何同時使用ints []和字符串[]?以及如何指定數組中的值的名稱? – Rella 2010-04-24 16:23:46
@ Ole有許多方法可以做到這一點,但根據您的要求,最好的設計可能會有所不同。您是否期望您將發送int或字符串「數字」,或者您是否希望此方法能夠將ints和concatenate字符串相加?如果第二個選項是您正在查找的內容,那麼使用兩個方法稱爲用於整數的Sum和另一個稱爲用於字符串的Concatenate更合理。另一方面,如果您正在尋找Sum整數或字符串數字,則可以創建對象數組或重載該方法。 – 2010-04-24 17:49:39
@Ole還指定數組中的值的名稱是什麼意思?該方法的參數被添加到名爲values的數組參數中。值[0]具有第一個參數值[1]具有第二個參數,依此類推。如果需要,可以手動將它們從方法代碼中的數組中分離出來。 – 2010-04-24 17:51:25
您可以在C#4.0中使用optional arguments來完成此操作。 如果您使用的是C#4.0之前的版本,則可以創建一個重載函數,該函數使用默認值調用您的函數。
如果您使用的是.NET 3.5或更早版本,則可以使用Nullable Types。
public int Sum(int valueA, int valueB, int? valueC)
{
int sum = valueA + valueB;
if (valueC.HasValue)
{
sum += valueC.Value;
}
return sum;
}
的呼聲是:
int answer1 = Sum(1, 2, 3); // = 6
int answer2 = Sum(1, 2, null); // = 3
當然經典的方式做到這一點是使用方法重載:如果你希望能夠使用string
作爲
public int Sum(int valueA, int valueB)
{
int sum = valueA + valueB;
return sum;
}
public int Sum(int valueA, int valueB, int valueC)
{
int sum = valueA + valueB + valueC;
return sum;
}
int answer1 = Sum(1, 2);
int answer2 = Sum(1, 2, 3);
以及int
移動到.NET4或創建另一對重載方法:
public int Sum(string valueA, string valueB)
{
// Convert the strings to int and call the previous code
// You will need to cope with the case when the strings don't represent numbers
}
public int Sum(string valueA, string valueB, string valueC)
{
...
}
如果你想應對混合string
和int
那麼你將需要更多的重載 - 這可能是矯枉過正。
爲什麼標記爲WPF? – 2010-04-24 16:13:29