[英]How to set which of function inputs are required and which are not (C#)
所以我有一個功能
public int Sum(var valueA, var valueB, var valueC) {
var summ = valueA + valueB;
return summ;
}
我想添加到summ valueC(如果已給出)。 如果不想,則不要讓用戶指定它。 怎么做這樣的事情?
您可以在C#4.0中使用可選參數來執行此操作。 如果使用的是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
當然,執行此操作的經典方法是使用方法重載:
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);
如果您希望既可以使用string
可以使用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
那么您將需要更多的重載-這可能是過大了。
除了Shane Fulmer提供的選項之外,您還可以使用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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.