当T为null时,如何声明参数类型为T的类?

凯西·克鲁克斯顿(Casey Crookston)

所以我有这个课:

    public class MyCallResponse<T>
    {
        public bool Success{ get; set; }
        public T Result { get; set; }
        // others
    }

此类可用于许多不同的呼叫类型。因此,TResult但是...在编码时,我总是提前知道T会是哪种类型所以我可以这样使用它:

MyCallResponse<List<foo>> response = await MakeACall<List<foo>>();

要么

MyCallResponse<int> response = await MakeACall<int>();

要么

MyCallResponse<string> response = await MakeACall<string>();

然后我有方法:

public async Task<MyCallResponse<T>> MakeACall<T>()
{
}

很棒!

但是,当我知道返回类型为时我不知道如何使用它null这不起作用:

MyCallResponse<null> response = await MakeACall<null>();

使用通用类型'MyCallResponse'需要1个类型参数

更不用说C#还不知道该怎么办 MakeACall<null>()

其他一些帖子一直在说要使用,default(T)但是我不确定如何在我的上下文中使用它。

有想法吗?谢谢!

更新:

根据Igor的评论,我解决了问题的前半部分,如下所示:

public class MyCallResponse
{
    public bool Success{ get; set; }
    // others
}

public class MyCallResponse<T> : MyCallResponse
{
    public T Result { get; set; }
}


现在,我可以这样做:

APICallResponse<string> response = ...

要么

APICallResponse response = ...

我现在正在研究的是:

APICallResponse response = await MakeACall<???>();

当我不需要传入类型时。

图巴卡亚

Null不是C#中的类型。泛型类型必须具有类型参数。如果要使用APICallResponse而不是APICallResponse<T>,则必须声明名称APICallResponse的另一个类型/类。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

类型参数“ T”必须为类类型

来自分类Dev

类型为<T>的类,其类型为<T>的可为空

来自分类Dev

java,Generics-如何对类型为T的类进行参数化,该类T既可以扩展也可以实现

来自分类Dev

java,Generics-如何对类型为T的类进行参数化,该类T既可以扩展又可以实现

来自分类Dev

当类型为参数时如何避免 typeid

来自分类Dev

当必需的参数为null时,如何在通用方法中不指定类型参数?

来自分类Dev

Scala泛型:如何声明类型必须为case类?

来自分类Dev

当T为IEnumerable <TP>时,将类型T的通用参数转换为List <TP>

来自分类Dev

类型为“ const wchar_t”的C ++参数*与类型为“ wchar_t”的参数不兼容

来自分类Dev

我想实现将参数作为类对象并将参数定义为Class <T>或T类型的通用java方法

来自分类Dev

如何在类型T的单个变量(字段或ref参数)上创建长度为1的Span <T>

来自分类Dev

CPP:定义模板时泛型数据类型T是否为类

来自分类Dev

通用类型的托管记录产生编译时错误“类型参数'T'必须为非空值类型”

来自分类Dev

如何检查T是否为聚合类型?

来自分类Dev

使用flurl客户端输入API时,JsonPatchDocument <T>参数为null

来自分类Dev

Typescript方法的声明参数为抽象类的类型并执行静态方法

来自分类Dev

IntegerType:无法使用类型为“ T”的参数调用“ init”

来自分类Dev

参数类型为:(size_t,const char [2])

来自分类Dev

使用反射php时,如果构造函数参数为引用,则返回的类为null

来自分类Dev

检查传递的参数是否为类的类型

来自分类Dev

对于任何泛型类型参数 T,如何将 Fn(T) + 'static 寄存器设置为 'static?

来自分类Dev

在Scala中,如何在编译时检查某些T是否为case类?

来自分类Dev

如何正确声明以函数类型为参数的模板(如std :: function)

来自分类Dev

警告:格式“%s”需要“char *”类型的参数,但参数 2 的类型为“__dev_t”[-Wformat=]

来自分类Dev

当反序列化对象为null时,如何让Json.net返回新的T值?

来自分类Dev

<T>无法解析为类型?

来自分类Dev

错误[Pe167]:类型为“ uint16_t *”的参数与类型为“ unsigned char *”的参数不兼容

来自分类Dev

如何在Typescript中声明泛型承诺,以便当泛型类型为“ <void>”时,其方法之一不带参数?

来自分类Dev

注意:预期为'char * __restrict__',但参数的类型为'int8_t *'

Related 相关文章

  1. 1

    类型参数“ T”必须为类类型

  2. 2

    类型为<T>的类,其类型为<T>的可为空

  3. 3

    java,Generics-如何对类型为T的类进行参数化,该类T既可以扩展也可以实现

  4. 4

    java,Generics-如何对类型为T的类进行参数化,该类T既可以扩展又可以实现

  5. 5

    当类型为参数时如何避免 typeid

  6. 6

    当必需的参数为null时,如何在通用方法中不指定类型参数?

  7. 7

    Scala泛型:如何声明类型必须为case类?

  8. 8

    当T为IEnumerable <TP>时,将类型T的通用参数转换为List <TP>

  9. 9

    类型为“ const wchar_t”的C ++参数*与类型为“ wchar_t”的参数不兼容

  10. 10

    我想实现将参数作为类对象并将参数定义为Class <T>或T类型的通用java方法

  11. 11

    如何在类型T的单个变量(字段或ref参数)上创建长度为1的Span <T>

  12. 12

    CPP:定义模板时泛型数据类型T是否为类

  13. 13

    通用类型的托管记录产生编译时错误“类型参数'T'必须为非空值类型”

  14. 14

    如何检查T是否为聚合类型?

  15. 15

    使用flurl客户端输入API时,JsonPatchDocument <T>参数为null

  16. 16

    Typescript方法的声明参数为抽象类的类型并执行静态方法

  17. 17

    IntegerType:无法使用类型为“ T”的参数调用“ init”

  18. 18

    参数类型为:(size_t,const char [2])

  19. 19

    使用反射php时,如果构造函数参数为引用,则返回的类为null

  20. 20

    检查传递的参数是否为类的类型

  21. 21

    对于任何泛型类型参数 T,如何将 Fn(T) + 'static 寄存器设置为 'static?

  22. 22

    在Scala中,如何在编译时检查某些T是否为case类?

  23. 23

    如何正确声明以函数类型为参数的模板(如std :: function)

  24. 24

    警告:格式“%s”需要“char *”类型的参数,但参数 2 的类型为“__dev_t”[-Wformat=]

  25. 25

    当反序列化对象为null时,如何让Json.net返回新的T值?

  26. 26

    <T>无法解析为类型?

  27. 27

    错误[Pe167]:类型为“ uint16_t *”的参数与类型为“ unsigned char *”的参数不兼容

  28. 28

    如何在Typescript中声明泛型承诺,以便当泛型类型为“ <void>”时,其方法之一不带参数?

  29. 29

    注意:预期为'char * __restrict__',但参数的类型为'int8_t *'

热门标签

归档