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


因此,有时indication会有一个Model.Trx.TransationPermissionCollection,很多时候却没有。在尝试访问它之前如何检查它是否可以正常工作,这样我就不会收到错误消息。

最佳答案

想必您会收到NullReferenceException吗?不幸的是,这没有很好的捷径。您必须执行以下操作:

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


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

当然,如果任何属性都是不可为null的类型,则无需检查它们是否为null :)

07-25 22:36