簡體   English   中英

檢查至少一個文本框是否具有內容的最佳方法?

[英]Best way to check that at least one textbox of many has content?

我有一個“搜索頁面”,要求至少一個文本框具有一些輸入。 下面的方法像這樣驗證:

    if (!String.IsNullOrEmpty(txtNome.Text))
    {
        return true;
    }
    if (!String.IsNullOrEmpty(txtEndereco.Text))
    {
        return true;
    }
    if (!String.IsNullOrEmpty(txtCidade.Text))
    {
        return true;
    }
    if (!String.IsNullOrEmpty(txtCEP.Text))
    {
        return true;
    }

    return false;

該方法的結果沒有任何問題。 我的問題與性能有關:是否有更好的方法進行檢查? 我想到的一種可能的替代方法:

string X = String.Concat(txtNome.Text,...,txtCEP.Text)
if(!String.IsNullOrEmpty(X))
{
    return true;
} 

我認為當第一個字段不為空時,使用if-return模式會更好,但是對於其他用例,使用String.Concat會更好。

有人可以讓我知道哪種方法更好,為什么? 還有另一種甚至更好的方法嗎?

如果所有控件的類型相同,則可以將要檢查的所有控件放入數組中,然后使用Linq的Any擴展方法:

return new[] { txtNome, txtEndereco, txtCidade, txtCEP }
    .Any(x => !String.IsNullOrEmpty(x.Text));

或者,如果不是所有控件都屬於同一類型,則創建一個字符串數組:

return new[] { txtNome.Text, txtEndereco.Text, txtCidade.Text, txtCEP.Text }
    .Any(x => !String.IsNullOrEmpty(x));

這和一個普通的老之間的性能差異if - else -阻塞可以忽略不計。

從純粹的性能角度來看,原始方法獲得更高效率的唯一方法是,如果按照最常用到最不常用的順序編寫檢查。

但是,即使是過時的過時技術,諸如比較值之類的簡單操作也幾乎是瞬時的。 嘗試在這里進行優化是您的真正浪費。 取而代之的是專注於學習更快,更簡潔地編寫代碼的方法,因此,當您將來重新訪問代碼時,它將更容易理解和修改。 pswg的答案顯示了如何利用linq。 我建議嘗試一下。

在一個側面說明,我建議你,而不是String.IsNullOrEmpty()您可以使用String.IsNullOrWhiteSpace() 同樣,它確實需要一點額外的性能開銷,但是它非常有用。

暫無
暫無

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

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