簡體   English   中英

在 c# 中將 += 或 -= 作為參數傳遞

[英]Pass += or -= as a parameter in c#

我有一個按鈕單擊方法,在 c# 中使用以下代碼(我正在開發的小型高爾夫評分程序只是為了好玩):

private void btnPlus_Click(object sender, EventArgs e)
{
    btnMinus.Enabled = true;
    if (f_intHoleNumber != 18) { f_intHoleNumber += 1; }
    if (f_intHoleNumber == 18) { btnPlus.Enabled = false; }
    txtHoleNumber.Text = f_intHoleNumber.ToString();            
}

我想重構它並從中提取另一個方法,所以我不重用代碼,但我不確定是否可以將運算符 (+=) 作為參數傳遞給方法。 這能做到嗎?

我不這么認為。 將 +1 或 -1 傳遞給該方法並將其與要添加或減去的值相乘怎么樣? 例如:

public float calc(float val1, float val2, int op) 
{
    return val1 + op * val2;
}

您可以傳遞一個為您進行加法和減法的方法。 你可能想走那條路。 使用 C# 將方法作為參數傳遞

您可以傳遞一個Func<int, int> ,它接受一個 int 參數並返回一個 int。

private void btnPlus_Click(object sender, EventArgs e)
{
    HandleHoleChange(currentHole => currentHole + 1);      
}

private void HandleHoleChange(Func<int, int> getNextHoleFunc)
{
    btnMinus.Enabled = true;
    if (f_intHoleNumber != 18) { f_intHoleNumber = getNextHoleFunc(f_intHoldNumber); }
    if (f_intHoleNumber == 18) { btnPlus.Enabled = false; }
    txtHoleNumber.Text = f_intHoleNumber.ToString();         
}

接受的答案允許傳遞一個0 ,這會擾亂計算。 如果您只想允許加法或減法,您可以使用布爾變量在參數列表中指定它:

public float calc(float val1, float val2, bool add) 
{
    int op = add ? 1 : -1;
    return val1 + op * val2;
}

暫無
暫無

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

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