【发布时间】:2022-01-13 22:46:10
【问题描述】:
我有一个具有不可为空引用类型的 .NET 6 项目。
我想将 objects 参数限制为可空对象的不可空数组。
我有 4 种可能的方法,并假设其中一种应该有效。
public void Method1(object[] objects)
public void Method2(object[]? objects)
public void Method3(object?[] objects)
public void Method4(object?[]? objects)
Method2 和 4 都接受空值。所以我只剩下 1 和 3,但我都收到了警告:
CS8625 无法将 null 文字转换为不可为 null 的引用类型
我希望方法 3 在没有警告的情况下工作:
Method3(new object[] { null });
有什么办法可以完成吗?
我的问题已在其中一个 cmets 中得到解答。我当然应该使用:
Method3(new object?[] { null });
【问题讨论】:
-
错误来自于参数的声明,而不是方法的定义。
-
new object?[] { null } -
看起来像错字 -
new object[] { null }不是object?[] objects... 除非它是确切的问题 - 但为什么你期望null满足不可为空object? -
我错过了什么吗?
public void Method3(object?[] objects)应该怎么做? (我的 IDE 没有给出“CS8625 Cannot convert null literal to non-nullable reference type”警告)
标签: c# nullable-reference-types