加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c#多个派遣选项?

发布时间:2020-12-15 04:30:08 所属栏目:百科 来源:网络整理
导读:我有这些课程: class Asset{ }class House:Asset{ } 考虑这些局外人的静态功能: static void Foo (Asset a) { }static void Foo (House h) { } 如果我写: House h = new House (...); Foo(h); 它将调用Foo(House)(编译时绑定) 如果我写: Asset a = new H
我有这些课程:
class Asset
{    }

class House:Asset
{    }

考虑这些局外人的静态功能:

static void Foo (Asset a) { }
static void Foo (House h) { }

如果我写:

House h = new House (...); 
Foo(h);

它将调用Foo(House)(编译时绑定)

如果我写:

Asset a = new House (...);
Foo(a);

它会调用Foo(Asset)(编译时绑定)

目标:访问运行时类型方法:

我有2个选择:

1)使用动态如下:

Asset a = new House (...);
 Foo ((dynamic)a); // NOW it will call  Foo(House)

2)使用多态机制将函数从static移动到override.

题 :

有没有其他方法这样做(没有将函数移动到多态机制||动态)?

解决方法

goal : access the runtime type method

这就是动态关键字的用途.它实际上是一个非常干净的&快速做多次派遣的方法.

您对Multiple Dispatch的最终选择是

>动态
> Double Dispatch虚拟方法
>一些哈希匿名函数规则集合
> if(x是House)……否则if(x是资产)……
>反思 – 真的很慢,也很难看

question : is there any other way of doing it ( without moving the functions to polymorphism mechanism || dynamic) ?

所以是的,当你可以使用动态快速,不易出错且真正的clean syntax wise时,有很多方法可以做你需要做很多工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读