类型“MyObject”必须是不可为空的值类型,才能将其用作泛型类型或方法“Nullable”中的参数“T”

本文关键字:类型 泛型类型 参数 Nullable 方法 MyObject | 更新日期: 2023-09-27 18:36:30

我正在使用.net framework 4.5

我收到以下错误

错误 CS0453 类型"MyObject"必须是不可为空的值类型,才能将其用作泛型类型或方法"可为空"中的参数"T"

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

我也试过

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

如果我将事情设置为可为空,那么为什么我会在方法名称下方看到带有此错误消息的红线

堆栈溢出答案很简单,使返回类型可为空,但对我来说,Visual Studio 不允许这样做。

类型“MyObject”必须是不可为空的值类型,才能将其用作泛型类型或方法“Nullable<T>”中的参数“T”

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

Nullable<T> 用于结构(如DateTime)和值类型,如intfloat等。