我創建了一個標誌Method1HasExecuted ,,我想實現的邏輯是,如果該標誌是真的我需要做 這個函數rp = Spa.Modify(val);否則返回RP爲false.For,我沒有這樣的優化導致無法訪問的代碼
if (Method1HasExecuted)
{
rp = Spa.Modify(val);//Save operation, this function also return boolean value
}
else rp = false;
然後優化我用三元運算符,做這樣的
return Method1HasExecuted ? Spa.ClientModify() : false;
但是,這樣做下來這樣一邊,我看到了一些無法訪問的代碼已經是這樣的
1.如何使它可達或在這裏使用三元運算符是不是必需的?是,需要
2.After catch塊,我們可以看到底部return retval;
,因爲所有的工作成果要麼是真的, 將執行保存操作或虛假手段在我的工作顯示serverdown,已經有
對於第二個問題,整個結構是現在這個樣子
雖然我同意,這不是一個優化的IL不會是相同的。如果是一個語句,三元運算符是一個表達式。如果僅用於平衡堆棧所需的彈出式指令,這將使IL不同。 – Stilgar 2010-08-30 07:52:45
是的,那很棒,那麼如果在rp = Method1HasExecuted中存在錯誤情況,那麼第二個問題呢? Spa.ClientModify():false;是需要向下或與抓取異常塊 – peter 2010-08-30 07:59:26
@peter相關:我想你的方法仍然期望返回一些東西,所以'return retval;'仍然是必需的。 'if(rp)...'邏輯應該也可以保留,因爲它可能會在類'databaseLocked'中設置一些狀態並編寫一些診斷消息。 – 2010-08-30 08:10:16