c#在使用之前检查属性是否存在

时间:2011-01-27 22:17:36

标签: c#

IndicationBase indication = new IndicationBase(Chatham.Web.UI.Extranet.SessionManager.PhysicalUser);
// check for permissions
LightDataObjectList<TransactionPermission> perms = indication.Model.Trx.TransactionPermissionCollection;

因此有时候indication会有Model.Trx.TransationPermissionCollection,很多时候都不会。如何在尝试访问它之前检查它是否存在,这样我就不会收到错误。

1 个答案:

答案 0 :(得分:4)

大概你得到NullReferenceException?不幸的是,这没有很好的捷径。你必须做类似的事情:

if (indication.Model != null &&
    indication.Model.Trx != null)
{
    var perms = indication.Model.Trx.TransactionPermissionCollection;
    // Use perms (which may itself be null)
}

请注意,属性本身始终存在 - 静态类型和编译器确保这一点 - 这只是检查属性链中是否有非空引用的情况。

当然,如果任何属性是非可空类型,则无需检查那些是否为null:)