Resharper 給出了一個可能的空參考警告。是否有可能解決不使用“!”的警告 標記?

我知道什么'!對 Visual Studio 說什么忽略了這個警告,但是如何以正確的方式解決它?方法是什么引起了這個警告
public IQueryable<AddressListData> GetAllForAddressList(int userId)
{
return dataContext.Addresses
.Where(x => x.UserId == userId)
.Include(u => u.Country)
.Include(u => u.User)
.Select(u => new AddressListData
{
Id = u.Id,
StreetAddress = u.StreetAddress,
City = u.City,
FullName = u.User.FullName, //this rises warning
CountryName = u.Country!.Name //bad solution of warning
});
}
public class AddressListData
{
public int Id { get; set; }
public string FullName { get; set; } = String.Empty;
public string StreetAddress { get; set; } = String.Empty;
public string City { get; set; } = String.Empty;
public string CountryName { get; set; } = String.Empty;
}
public class Address
{
public int Id { get; set; }
public int UserId { get; set; }
[StringLength(20, MinimumLength = 3)]
[Required]
public string StreetAddress { get; set; } = string.Empty;
[StringLength(20, MinimumLength = 3)]
[Required]
public string City { get; set; } = string.Empty;
[StringLength(60, MinimumLength = 3)]
[Required]
public string Zip { get; set; } = string.Empty;
public int CountryId { get; set; }
public User? User { get; set; }
public Country? Country { get; set; }
}
uj5u.com熱心網友回復:
如果您對 FullName 和 CountryName 也可能為空感到滿意,那么一種解決方案是“空條件運算子 ?. 和 ?[] ”
正如你所說的 u.Country!.Name 正在使用一個空的寬容運算子,基本上忽略了這個問題。如果您使用 null 條件,如果左側物件為 null,而不是屬性訪問器導致錯誤,而是將初始賦值也作為 null 完成。這也可以鏈接到其他屬性。
例子:
CountryName = u.Country?.Name
AnotherValue = u.Address?.City?.SomethingElse
uj5u.com熱心網友回復:
我找到了解決方案,是檢查實際模型是否為空,如果不是,則將其設定為空,然后呼叫進一步查詢/這是由三元 if 陳述句完成的
代碼更容易理解
public IQueryable<AddressListData> GetAllForAddressList(int userId)
{
return dataContext.Addresses
.Where(x => x.UserId == userId)
.Include(u => u.Country)
.Include(u => u.User)
.Select(u => new AddressListData
{
Id = u.Id,
StreetAddress = u.StreetAddress,
City = u.City,
FullName = u.User.FullName, //this rises warning
CountryName = u.Country!.Name //bad solution of warning
});
}
public IQueryable<AddressListData> GetAllForAddressList(int userId)
{
return dataContext.Addresses
.Where(x => x.UserId == userId)
.Include(u => u.Country)
.Include(u => u.User)
.Select(u => new AddressListData
{
Id = u.Id,
StreetAddress = u.StreetAddress,
City = u.City,
FullName = u.User != null ? u.User.FullName : string.Empty,//here is solution
CountryName = u.Country != null ? u.Country.Name : string.Empty,//it checks if model is null if so places null
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/422295.html
標籤:
下一篇:C#如何檢查重疊范圍?
