第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

用C#雙重調(diào)度?

用C#雙重調(diào)度?

我聽(tīng)過(guò)/讀過(guò)這個(gè)詞,但不太理解它的意思。我什么時(shí)候應(yīng)該使用這種技術(shù),我將如何使用它?誰(shuí)能提供一個(gè)好的代碼示例?
查看完整描述

3 回答

?
HUH函數(shù)

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊

訪客模式是一種以面向?qū)ο蟮姆绞竭M(jìn)行兩次調(diào)度的方法。


當(dāng)您要在運(yùn)行時(shí)而不是編譯時(shí)根據(jù)類(lèi)型選擇給定參數(shù)使用哪種方法時(shí),此功能很有用。


雙重調(diào)度是多重調(diào)度的特例。


當(dāng)您在對(duì)象上調(diào)用虛擬方法時(shí),這被視為單調(diào)度,因?yàn)檎{(diào)用哪個(gè)實(shí)際方法取決于單個(gè)對(duì)象的類(lèi)型。


對(duì)于雙重分派,將同時(shí)考慮對(duì)象的類(lèi)型和方法sole參數(shù)的類(lèi)型。這類(lèi)似于方法重載解析,只是參數(shù)類(lèi)型是在運(yùn)行時(shí)以雙調(diào)度方式而不是在編譯時(shí)靜態(tài)確定的。


在多調(diào)度中,一個(gè)方法可以有多個(gè)參數(shù)傳遞給它,根據(jù)每個(gè)參數(shù)的類(lèi)型使用哪種實(shí)現(xiàn)。評(píng)估類(lèi)型的順序取決于語(yǔ)言。在LISP中,它從頭到尾檢查每種類(lèi)型。


具有多個(gè)分派的語(yǔ)言使用泛型函數(shù),這些泛型函數(shù)只是函數(shù)代用,與使用類(lèi)型參數(shù)的泛型方法不同。


要在C#中進(jìn)行兩次調(diào)度,可以聲明一個(gè)帶有唯一對(duì)象參數(shù)的方法,然后聲明具有特定類(lèi)型的特定方法:


using System.Linq;  


class DoubleDispatch

    public T Foo<T>(object arg)

    { 

        var method = from m in GetType().GetMethods()

                   where    m.Name == "Foo" 

                         && m.GetParameters().Length==1

                         && arg.GetType().IsAssignableFrom

                                           (m.GetParameters()[0].GetType())

                         && m.ReturnType == typeof(T)

                   select m;


        return (T) method.Single().Invoke(this,new object[]{arg});          

    }


    public int Foo(int arg) { /* ... */ }


    static void Test() 

    { 

        object x = 5;

        Foo<int>(x); //should call Foo(int) via Foo<T>(object).

    }

}       


查看完整回答
反對(duì) 回復(fù) 2019-12-25
  • 3 回答
  • 0 關(guān)注
  • 777 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)