簡體   English   中英

如何設置哪些功能輸入是必需的,哪些不需要(C#)

[英]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)
{
    ...
}

如果您想處理混合的stringint那么您將需要更多的重載-這可能是過大了。

除了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.

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