【问题标题】:The type 'MyObject' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'Nullable<T>'类型“MyObject”必须是不可为空的值类型,才能将其用作泛型类型或方法“Nullable<T>”中的参数“T”
【发布时间】:2016-02-26 09:26:56
【问题描述】:

我正在使用.net framework 4.5

我收到以下错误

错误 CS0453 类型“MyObject”必须是不可为空的值类型才能在泛型类型或方法“Nullable”中用作参数“T”

  public async Task<Nullable<MyObject>> MyMethod(string myParamter)
    {}

我也试过了

  public async Task<MyObject?> MyMethod(string myParamter)
    {}

如果我将事物设置为可为空,那么为什么我会在方法名称下方出现红线并显示此错误消息

stackoverflow answer 很简单,使返回类型可以为空,但对我来说 Visual Studio 不允许这样做。

【问题讨论】:

  • Nullable 仅用于不可为空的值类型,以允许值类型允许为空。引用类型默认允许空值。
  • public class MyObject

标签: c# generics


【解决方案1】:

由于MyObject 是一个对象,并且根据定义,对象可以为空,因此使用Nullable&lt;T&gt; 结构或? 运算符来支持空值是没有用的。

Nullable&lt;T&gt; 用于结构(如 DateTime)和值类型,如 intfloat 等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多