在檢查對象不爲空之後,從對象獲取屬性的最快方法(就最小化代碼語句量而言)是什麼?檢查對象不爲空後從對象獲取屬性的最快方法是什麼?
string s = null;
if (null != myObject)
{
s = myObject.propertyName;
}
在檢查對象不爲空之後,從對象獲取屬性的最快方法(就最小化代碼語句量而言)是什麼?檢查對象不爲空後從對象獲取屬性的最快方法是什麼?
string s = null;
if (null != myObject)
{
s = myObject.propertyName;
}
C#沒有空傳播運算符(儘管已經討論了幾次)。坦率地說,「快」是不可能在這裏是一個因素,因爲它通常會在同一個(或非常相似),IL結束了,但我傾向於使用:
string s = myObject == null ? null : myObject.PropertyName;
我會把條件放入大括號中,因爲這會導致混淆:'string s =(myObject == null)? null:myObject.PropertyName;' –
@JohannesWanzek我不會感到困惑,編譯器也不會混淆。如果你更喜歡括號,儘量使用它們。 –
將條件放入括號中是一種常見模式,因此開發人員可直接確定此表達式的含義。但好的,這是我的意見。 –
參考:爲等待future C# 6.0 feature爲null,與可能?.
語法檢查:
string result = obj?.ToString();
現在:使用ternary operator:
string result = obj != null ? obj.ToString() : null;
目前,這仍然是一種*可能的*新語法。例如,它不在目前可用的roslyn版本中。 (\ *咳嗽\ *有條件的操作員\ *咳嗽\ *) –
您描述的情況只是操作員有用的一種情況。這也是方便替換結構是這樣的:
if (value != null)
{
return value;
}
else
{
return otherValue;
}
或者
return value != null ? value : otherValue;
與
return value ?? otherValue;
使用三元運算符? var s = myObject == null? null:myObject.PropertyName 目前尚不清楚「最快」下的含義。 – Oleg
(開始名稱上的戰爭:「三元」vs「條件」操作符......) –
你的意思是最簡單的,因爲這不會是你代碼中最慢的部分,你應該需要擔心這裏的性能。 –