【发布时间】:2022-01-20 14:41:50
【问题描述】:
我目前使用的是 Visual Studio 2022,下面是我的代码。
for (int i = 0; i < list.Count; i++)
{
if (list[i].TenantDetails != null)
dtEntity = DataTableManager.ConvertData(list[i].TenantDetails);
}
public static DataTable ConvertData(byte[] data) { ... }
收到以下警告。 警告 CS8604 'DataTable DataTableManager.ConvertData(byte[] data)' 中参数 'data' 的可能空引用参数
如何避免这个警告?将我的旧项目从 VS 2019 转换为 2022 后,我收到了很多代码警告。
【问题讨论】:
-
您可能启用了可空引用,这意味着您必须格外小心。 确切和准确是
.TenantDetails成员的类型? -
公共部分类租户{公共字节[]?租户详情 { 获取;放;如果我删除“?”在 byte[] 中,它给出了另一个警告 - 警告 CS8618 Non-nullable property 'TenantDetails' must contain a non-null value when exiting constructor.考虑将属性声明为可为空。
-
所以你说
TenantDetails是byte[]?,末尾的问号表示属性可能 是null。然而,ConvertData接受byte[],没有问号。我知道你有 if 语句,但编译器总是不够聪明,所以你可能必须在参数后使用!,或者你可以使用var details = list[i].TenantDetails;,然后在 if 语句和参数中使用它,然后编译器会看到它保证是相同的值。 -
我猜它不知道阅读
list[i]确实会绊倒它。 -
我确信我会在初始化对象时为下面的属性赋值。公共字节[]?租户详情 { 获取;放;但是有没有办法删除“?”并摆脱警告 CS8618 Non-nullable property 'TenantDetails' must contain a non-null value when exiting constructor
标签: .net asp.net-core .net-core visual-studio-2022