2013-03-24 70 views
0

我如何使用三元操作三元操作,以儘量減少代碼

if (toolButtonState.New == 1) 
    ts.Items["tsbNew"].Enabled = true; 
else 
    ts.Items["tsbNew"].Enabled = false; 

請提供一個實現

+0

有你爲什麼認爲有必要更改此代碼什麼特別的原因?如果你想要改進工作代碼,你應該發佈到http://codereview.stackexchange.com/ – 2013-03-24 04:56:02

回答

6

你不需要ternary operator最小化下面的代碼。你可以把它簡化這樣的:

ts.Items["tsbNew"].Enabled = (toolButtonState.New == 1); 

從技術上講,你可以使用一個三元運算符這樣的,但沒有理由:

ts.Items["tsbNew"].Enabled = (toolButtonState.New == 1) ? true : false; 

通常情況下,三元表達式更加有用的,如果表達式後在?:不要簡單地計算爲truefalse,如下列要求:

someControl.ForeColor = (toolButtonState.New == 1) ? Color.Red : Color.Black; 

請記住,如果表達式不僅僅是一個簡單的單行表達式,而且您的代碼可能更具可讀性,如果您只是使用陳舊的if/else陳述和花括號。

1

ternary operator的形式爲:

(condition) ? (if true) : (if false) 

所以在你的代碼的三元將上交至:

ts.Items["tsbNew"].Enabled = (toolButtonState.New == 1) ? true : false; 

你會發現,雖然該如果真值是true和如果虛假值是false。你可以簡單地刪除三元聲明,它會通過設置.Enabled的條件的結果做同樣的事情:

ts.Items["tsbNew"].Enabled = (toolButtonState.New == 1);