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

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

int i = Test();
string " /> 国产免费高清mv视频在线观看,vagaa哇嘎黄短片,午夜伦4480yy妇女久久

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

如何實現用返回值重載

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

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

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

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


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

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();
        }
    }
}
調用的語法非常之完美:

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

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

NET技術如何實現用返回值重載,轉載需保留來源!

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

主站蜘蛛池模板: 国产精品嫩草影院一区二区三区 | eussse手机电影在线观看 | 玩弄人妻少妇500系列网址 | 国模玲玲自拍337p | 2018国产天天弄谢 | 国产99久久久国产精品成人 | 国产成人亚洲综合无 | 国产精品女上位在线观看 | 97国产成人精品免费视频 | 久久伊人影视 | 哺乳溢出羽月希中文字幕 | 小舞被爆操 | 国产精品99久久久久久人韩国 | 99婷婷久久精品国产一区二区 | hdsex老太婆70 | 久久精品综合电影 | 最懂男人心论坛 | 97久久精品人人槡人妻人 | 美女脱衣服搞鸡 | 依恋影院在线观看 | 伊人狠狠丁香婷婷综合尤物 | 手机在线看片欧美亚洲 | 99精品热视频30在线热视频 | 很很射影院 | 免费亚洲视频在线观看 | 一本道色播 | 国产午夜精品理论片免费观看 | 久久精品九九亚洲精品天堂 | 韩剧19禁啪啪无遮挡大尺度 | 99国产精品人妻无码免费 | 国产99精品视频 | ASIAN大陆明星裸休合成PICS | 成人小视频在线观看免费 | 日日日夜夜在线视频 | 中字幕视频在线永久在线 | 午夜福利电影网站鲁片大全 | 果冻传媒色AV国产播放 | 美女强奷到抽搐在线播放 | 久久天天躁狠狠躁夜夜躁 | 久久国产主播福利在线 | 一本色道久久88综合日韩精品 |