簡體   English   中英

檢查多個變量C#的相等性是否相等

[英]Checking for equality to the same value for more than one variable C#

此比較語句是否有速記版本:

if (txtId.Text != string.Empty && txtName.Text != string.Empty && txtBOD.Text != string.Empty && txtPhone.Text != string.Empty)
{//do something }

是否有類似的內容:如果所有這些文本框的值都為!= string.Empty,則執行某些操作

您可以將文本框放在一個數組中,然后使用linq:

TextBox[] boxes = new [] {txtId, txtName, txtBOD, txtPhone};
if (boxes.All(b => !string.IsNullOrEmpty(b.Text)))
    // do something

您應該將數組存儲在窗口的成員變量中,這樣就不必每次檢查都再次創建它。


或者(如Habib所指出的),如果所有這些文本框都在一個容器控件中, 並且它們是該控件上僅有的文本框,則可以使用以下命令:

if (containingControl.Controls.OfType<TextBox>().All(b => !string.IsNullOrEmpty(b.Text)))
    // do something

OfType<>()返回在所有控件的枚舉containingControl的控制集合,該集合的類型的TextBox ,你可以然后簡單地通過該序列與遍歷All


請注意(如其他人所指出的那樣),使用string.IsNullOrEmpty()比與string.Empty進行比較是一種更好的做法(因為已經包含了null檢查,盡管在文本框中這無關緊要)。

您可以創建這樣的方法:

private bool AreAllEmpty(params TextBox[] toCheck)
{
    foreach (var tb in toCheck)
    {
        if (!string.IsNullOrEmpty(tb.Text)) return false;
    }

    return true;
}

或用LINQ這樣:

private bool AreAllEmpty(params TextBox[] toCheck)
{
    return toCheck.All(tb => string.IsNullOrEmpty(tb.Text));
}

然后將您的文本框集合傳遞給它,例如:

if(AreAllEmpty(textBox1, textBox2, textBox3, textBox4))
{
    // do something../
}

如果您像我一樣,並且喜歡通過將單獨的操作卸載到自己的方法中來減小方法的大小,那么這種方法是不錯的選擇。 (這具有許多優點:DRY,關注點分離等)

暫無
暫無

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

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