string Test() {...}
int Test() {...}

然后通過接受方的上下文自動選取重載:

int i = Test();
string " /> 成人免费夜片在线观看,在线一区播放,9久热久re爱免费精品视频

一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

如何實現(xiàn)用返回值重載

今天[ IceSharK - PP.Poet ]很清純地提出了一個問題,如何能做到函數(shù)返回值重載?簡單的說,就是如何實現(xiàn)

string Test() {...}
int Test() {...}

然后通過接受方的上下文自動選取重載:

int i = Test();
string s = Test();


當(dāng)然VB或者C#都是不允許這樣寫的。不過IL并沒有禁止這一寫法,事實上在VB或C#中有一種語法結(jié)構(gòu)允許按照返回值選取相應(yīng)的重載,那就是隱式類型轉(zhuǎn)換運算符(implicit operator或者Widening Operator CType)。通過輔助類的隱式類型轉(zhuǎn)換運算符,我們可以實現(xiàn)上述要求的語法。

class Foo
{
    string TestString()
    {
        return "I'm a string";
    }

    int TestInt()
    {
        return 100;
    }

    public TestHelper Test()
    {
        return new TestHelper(this);
    }

    public struct TestHelper
    {
        Foo m_host;
        public TestHelper(Foo host)
        {
            m_host = host;
        }

        public static implicit operator int(TestHelper helper)
        {
            return helper.m_host.TestInt();
        }

        public static implicit operator string(TestHelper helper)
        {
            return helper.m_host.TestString();
        }
    }
}
調(diào)用的語法非常之完美:

Foo f = new Foo();
int i = f.Test();
string s = f.Test();

怎么樣,并沒有使用很高深的語法,就實現(xiàn)了想要的東西。

NET技術(shù)如何實現(xiàn)用返回值重載,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产产一区二区三区久久毛片国语 | wwwav在线| 亚洲免费黄色 | 97久久精品国产成人影院 | 激情婷婷六月 | 中文字幕一区二区在线播放 | 日本高清视频wwww色 | 亚欧美色 | 日本精品一区二区三区视频 | 精品国产欧美一区二区三区成人 | 国产精品福利在线观看免费不卡 | 久久亚洲aⅴ精品网站婷婷 久久亚洲不卡一区二区 | 激情一区二区三区成人 | 精品日韩在线视频一区二区三区 | 正在播放国产乱子伦视频 | 久久综合色区 | 亚洲一页 | 国产精品高清2021在线 | 成人午夜在线观看国产 | 亚洲丶国产丶欧美一区二区三区 | 亚洲爱色 | 欧洲a老妇女黄大片 | 综合网激情 | 中文字幕一区二区三区5566 | 欧美色欧 | 久久福利一区 | 亚洲第一区在线观看 | 欧美不卡视频在线观看 | 国内精品线在线观看 | 国产精彩刺激对白视频 | 欧美激情区| 国产精品视频一区二区三区小说 | 久久97久久97精品免视看清纯 | 555夜色555亚洲夜色 | 国产精品极品美女自在线 | 九九亚洲精品 | 国产中文视频 | 国产日韩一区二区三区在线播放 | 国产一区二区在线视频 | 高清不卡一区二区三区 | 亚洲国产成人在线 |