我有我的asp.net MVC Web應用程序內的下列模型類:空異常可空<int>
public class SecurityRoleGroupAssign
{
public IEnumerable<TechnologyType> TechnologyType {get; set;}
public IEnumerable<PermisionLevel> PermisionLevel {get; set;}
public SecurityRole SecurityRole { get; set; }
public Nullable<int> rackPermisionLevel { get; set; }
public Nullable<int> serverPermisionLevel { get; set; }
public Nullable<int> routerPermisionLevel { get; set; }
public Nullable<int> virtualMachinePermisionLevel { get; set; }
public Nullable<int> switchPermisionLevel { get; set; }
}
但是,當我試圖填充這個類我得到一個空例外: -
public SecurityRoleGroupAssign populateSecurityRolePermisionLevelAssign(int RoleID)
{
SecurityRoleGroupAssign c = new SecurityRoleGroupAssign
{
SecurityRole = FindAllRole(RoleID),
PermisionLevel = tms.PermisionLevels.ToList(),
TechnologyType = tms.TechnologyTypes.ToList(),
serverPermisionLevel = tms.SecurityroleTypePermisions
.Where(a=>a.SecurityRoleID == RoleID)
.Where(a2=>a2.TechnologyType.Name.ToLower() == "server")
.SingleOrDefault().PermisionLevelID,
rackPermisionLevel = tms.SecurityroleTypePermisions
.Where(a => a.SecurityRoleID == RoleID)
.Where(a2 => a2.TechnologyType.Name.ToLower() == "rack")
.SingleOrDefault().PermisionLevelID,
virtualMachinePermisionLevel = tms.SecurityroleTypePermisions
.Where(a=>a.SecurityRoleID == RoleID)
.Where(a2=>a2.TechnologyType.Name.ToLower() == "virtual machine")
.SingleOrDefault().PermisionLevelID,
routerPermisionLevel = tms.SecurityroleTypePermisions
.Where(a=>a.SecurityRoleID == RoleID)
.Where(a2=>a2.TechnologyType.Name.ToLower() == "router")
.SingleOrDefault().PermisionLevelID,
switchPermisionLevel = tms.SecurityroleTypePermisions
.Where(a => a.SecurityRoleID == RoleID)
.Where(a2 => a2.TechnologyType.Name.ToLower() == "switch")
.SingleOrDefault().PermisionLevelID
};
return c;
}
什麼生產線給你的NRE? –
如果未找到任何值,未經檢查的使用'SingleOrDefault'可以爲您提供空引用異常。 'Single'會拋出一個異常,即集合中沒有匹配的元素,但SingleOrDefault只返回null,此時你正試圖引用一個'null'對象的屬性。換句話說,它可能不是你設置*的屬性,而是你設置它的表達。 – David
字面上,該片段的每一行都可能會引發空引用異常。在您的'SecurityRoleGroupAssign'中添加可空字段絕不會防止類的實例構造出錯。 –