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