这两个示例都会在相同的情况下成功或失败,并且当它们成功时,行为将是相同的。
当它们失败时,结果会稍有不同:第二个示例稍早失败(在演员表),另一个示例更具体的例外(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