簡體   English   中英

優化C#中的條件運算符分支

[英]Optimize conditional operators branching in C#

返回this.AllowChooseAny.Value嗎? radioSpecific.Checked? UserManager.CurrentUser.IsClient嗎? txtSubject.Text:subjectDropDownList.SelectedItem.Text:String.Empty:UserManager.CurrentUser.IsClient? txtSubject.Text:subjectDropDownList.SelectedItem.Text;

或更簡單的形式:

return any ?
    specified ?
       isClient ? textbox : dropdown :
       empty :
    isClient ? textbox : dropdown;

或以示意圖形式:

                     |
                    any
              /            \
      specified             isClient
      /        \           /        \
  isClient    empty     textbox  dropdown
  /       \
textbox  dropdown

顯然,我在兩個不同級別上有一個重復的塊。 有可能優化此代碼以將它們拆分為一個嗎? 或類似的東西..

該代碼塊幾乎是不可讀的。 不要僅僅為了三元運算符而使用三元運算符。 通過消除非常簡單的表達式的if塊,可以使thig 更具可讀性。 你所沒有的。

您可以將表達式簡化為:

if (any && !specified)
{
    return empty;
}
else
{
    return isClient ? textbox : dropdown;
}
any && !specified ? 
   empty : 
   isClient ? textbox : dropdown;  

isClient ? textbox : dropdown isClient ? textbox : dropdown方法中的isClient ? textbox : dropdown框,並從您的原始分支進行方法調用=不再重復代碼。

暫無
暫無

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

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