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