为什么用as代替演员?

凯文·瓦利斯(Kevin Wallis)

我有两个类,其中第一个类引用第二个类。我的问题是,为什么在第二节课中该行cl.container = this as ClassContainer<MyClass>;有效而显式强制转换cl.container = (ClassContainer<MyClass>)this;却行不通。

class MyClass
{
    public ClassContainer<MyClass> container { get; set; }
}

第二类:

class ClassContainer<T> where T : MyClass
{
    public ClassContainer()
    {
        MyClass cl = new MyClass();
        cl.container = this as ClassContainer<MyClass>; // works
        cl.container = (ClassContainer<MyClass>)this;   // does not work
    }
}
恶德

这是因为as是安全的转换,即,如果无法转换类型,则不会引发异常或编译器错误。它只会返回nullc1.container应该null在使用之后as

从您的代码中,您可能正在尝试使用变体泛型。在MSDN查看此链接,以帮助实现您想要做的事情。不过您必须使用接口,并且不能同时创建协变和逆变的类型参数。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么用阴谋而不是使

来自分类Dev

Vim:为什么用$作为行尾?

来自分类Dev

信号量表示法-为什么用V和P代替S和W

来自分类Dev

为什么用.call(this)代替括号

来自分类Dev

为什么用HMVC代替MVC for Codeigniter?

来自分类Dev

为什么用土耳其里拉符号₺代替?在SQL Server 2008数据库中

来自分类Dev

为什么用===代替==来表示未定义

来自分类Dev

代替createSuggestBox()有什么用?

来自分类Dev

为什么用ViewStates代替Sessions

来自分类Dev

为什么用TCPDF代替mpdf

来自分类Dev

为什么用分号代替空块并不总是有效?

来自分类Dev

为什么用QT编译OpenCV?

来自分类Dev

为什么用“ std :: vector <std :: string>&”代替“ void”?

来自分类Dev

为什么用S和T代替A和B?

来自分类Dev

为什么用“ if(!! variable)”而不是“ if(variable)”?

来自分类Dev

为什么用int代替long long可以提高性能?

来自分类Dev

Haskell:为什么用等号失败?

来自分类Dev

Year年算法-为什么用“或400”代替“和”?

来自分类Dev

Vim:为什么用$作为行尾?

来自分类Dev

为什么用redis的sdahdr结构中的char buf []代替char * buf

来自分类Dev

为什么用!!(condition)代替(condition)?

来自分类Dev

为什么用HMVC代替Codeigniter的MVC?

来自分类Dev

为什么用土耳其里拉符号₺代替?在SQL Server 2008数据库中

来自分类Dev

为什么用递归停止isRoundNumber

来自分类Dev

为什么用联合包装结构?

来自分类Dev

为什么用enp#s#代替eth#?enp#s#是什么意思?

来自分类Dev

为什么用“ std :: vector <std :: string>&”代替“ void”?

来自分类Dev

为什么用“ if(!! variable)”而不是“ if(variable)”?

来自分类Dev

为什么用int代替long long可以提高性能?

Related 相关文章

  1. 1

    为什么用阴谋而不是使

  2. 2

    Vim:为什么用$作为行尾?

  3. 3

    信号量表示法-为什么用V和P代替S和W

  4. 4

    为什么用.call(this)代替括号

  5. 5

    为什么用HMVC代替MVC for Codeigniter?

  6. 6

    为什么用土耳其里拉符号₺代替?在SQL Server 2008数据库中

  7. 7

    为什么用===代替==来表示未定义

  8. 8

    代替createSuggestBox()有什么用?

  9. 9

    为什么用ViewStates代替Sessions

  10. 10

    为什么用TCPDF代替mpdf

  11. 11

    为什么用分号代替空块并不总是有效?

  12. 12

    为什么用QT编译OpenCV?

  13. 13

    为什么用“ std :: vector <std :: string>&”代替“ void”?

  14. 14

    为什么用S和T代替A和B?

  15. 15

    为什么用“ if(!! variable)”而不是“ if(variable)”?

  16. 16

    为什么用int代替long long可以提高性能?

  17. 17

    Haskell:为什么用等号失败?

  18. 18

    Year年算法-为什么用“或400”代替“和”?

  19. 19

    Vim:为什么用$作为行尾?

  20. 20

    为什么用redis的sdahdr结构中的char buf []代替char * buf

  21. 21

    为什么用!!(condition)代替(condition)?

  22. 22

    为什么用HMVC代替Codeigniter的MVC?

  23. 23

    为什么用土耳其里拉符号₺代替?在SQL Server 2008数据库中

  24. 24

    为什么用递归停止isRoundNumber

  25. 25

    为什么用联合包装结构?

  26. 26

    为什么用enp#s#代替eth#?enp#s#是什么意思?

  27. 27

    为什么用“ std :: vector <std :: string>&”代替“ void”?

  28. 28

    为什么用“ if(!! variable)”而不是“ if(variable)”?

  29. 29

    为什么用int代替long long可以提高性能?

热门标签

归档