gpt4 book ai didi

c# - 不可为空的默认返回空警告

转载 作者:行者123 更新时间:2023-12-04 09:56:11 24 4
gpt4 key购买 nike

在 C#8 中,我们现在可以启用可空值,这意味着编译器默认情况下将引用类型视为非空值,除非明确声明为可空值。然而,当尝试使用 notnull 返回默认泛型时,编译器似乎仍会抛出警告。约束。考虑以下示例:

public TReturn TestMethod<TReturn>() where TReturn : notnull
{
return default; // default is flagged with a compiler warning for possible null reference return
}

我想如果我还强制要求返回类型必须有一个空的构造函数,也许会有所帮助,但它会产生相同的结果:
public TReturn TestMethod<TReturn>() where TReturn : notnull, new()
{
return default; // default is flagged with a compiler warning for possible null reference return
}

为什么编译器标记这一行?

最佳答案

TReturn : notnull意味着 TReturn必须是不可为空的类型(可以是值类型或不可为空的引用类型)。不幸的是,value of default for non-nullable reference types is still null ,因此编译器警告。

例如,如果您希望不可空引用类型的“默认值”是使用无参数构造函数创建的任何内容,您可以执行以下操作:

public TReturn TestMethod<TReturn>() where TReturn : notnull, new()
{
return new TReturn();
}

关于c# - 不可为空的默认返回空警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61920204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com