我已经用 .NET 8 用 C# 编写了一个实现 IDataParameter 的类。 我在 Setter 上得到了此代码的 CS8767:
public class TestDataParameter: IDataParameter
{
...
public string ParameterName
{
get; set;
} = "";
...
}
返回类型为字符串?通向 Getter 上的 CS8766。
public class TestDataParameter: IDataParameter
{
...
public string? ParameterName
{
get; set;
} = "";
...
}
这非常烦人。该接口将属性声明为字符串。我不明白为什么 getter 和 setter 需要不同的可空性以及应该如何实现。 IDataParameter 声明了
string ParameterName { get; set; }
,因此实现不可为 null 的属性应该是正确的。
有谁知道为什么会发生这种情况以及如何正确处理?
谢谢,亚历克斯。
如果您想删除警告,您可以遵循 接口本身使用的方法 - 使用
AllowNullAttribute
:
public class TestDataParameter : IDataParameter
{
// ...
[AllowNull]
public string ParameterName { get; set; } = "";
// ...
}
另请参阅: