小编Kon*_* S.的帖子

C# 8 中可空类型和泛型的问题

添加<Nullable>enable</Nullable>or 后#nullable enable,我的通用方法遇到了以下问题:

这不起作用:

public T? GetDefault<T>()
{
    return default;
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

这适用于警告:

public T GetDefault<T>()
{
   return default;
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

这单独工作,但不能一起工作。

public T? GetDefault<T>() where T : class
{
    return default;
}

public T? GetDefault<T>() where T : struct
{
    return default;
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

从逻辑上讲,第一种方法应该有效。
在不创建多种方法和抑制警告的情况下,摆脱这种情况的正确方法是什么(在任何框架中)?
[MaybeNull] 属性仅适用于 .Net Core 3.0+。

另外,我在这里问了这个问题

c# generics c#-8.0 nullable-reference-types

12
推荐指数
3
解决办法
581
查看次数

标签 统计

c# ×1

c#-8.0 ×1

generics ×1

nullable-reference-types ×1