這兩個示例都會在相同的情況下成功或失敗,並且當它們成功時,行爲將是相同的。
當它們失敗時,結果會稍有不同:第二個示例稍早失敗(在演員表),另一個示例更具體的例外(InvalidCastException
與NullReferenceException
)。
主要優勢在於調試:當它們失敗時,您會在第二個示例中獲得關於失敗原因的更多信息。具體而言,如果PropertyIdentifier爲null
與非string
,則可以在第二種情況下進行分析,但不能在第一種情況下進行分析。
另外,如果您處於try/catch
中,則可以在與null
情況不同的代碼路徑中處理非string
大小寫。但是,你可能不應該用這種方式編碼:如果你是這樣,你還在做其他的事。
這可能有助於闡明這種情況,如果你通過下面的代碼在不同的情況下步驟:
var propertyI = lstProperty[i];
var propertyIdentifier = propertyI.PropertyIdentifier;
// pick one of these:
var propertyIdentifierAsString = propertyIdentifier as string;
var propertyIdentifierAsString = (string)propertyIdentifier;
if (propertyIdentifierAsString.CompareTo("Name") == 0)
這是我的想法!謝謝 – 2008-11-03 16:02:39