这两个示例在相同的情况下将成功或失败,并且当它们成功时,行为将相同。
当它们失败时,结果会略有不同:第二个示例稍早失败(在演员表中),并且有一个更具体的异常(InvalidCastException
vs. NullReferenceException
)。
主要的好处是调试:当它们失败时,您可以在第二个示例中比第一个示例中获得更多关于失败原因的信息。具体来说,如果 PropertyIdentifier 是null
vs. non- string
,您可以在第二种情况下判断,但不能在第一种情况下判断。
此外,如果您在 a 中,则可以在与case 不同的代码路径中try/catch
处理 non- case。但是,您可能不应该这样编码:如果是这样,那么您做错了其他事情。string
null
如果您在各种情况下逐步执行以下代码,它可能有助于阐明情况:
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)