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