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

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

int i = Test();
string " /> 日韩欧美无线在码,香蕉国产人午夜视频在线,妇videosexfreexxxx

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

如何實現用返回值重載

今天[ 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技術如何實現用返回值重載,轉載需保留來源!

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

主站蜘蛛池模板: 韩国理伦一级毛片 | 欧美综合网站 | 九九99国产精品视频 | 毛片小说 | 国产精品久久久亚洲第一牛牛 | 欧美日韩加勒比一区二区三区 | 日本免费一区二区三区看片 | 国产在线精品一区二区不卡 | 亚洲精品永久www嫩草 | 午夜在线视频免费 | 国产成人精品免费2021 | 日韩精品一区二区三区中文在线 | 国产精品亚洲片夜色在线 | 伊人9999| 美女网站黄 | 丁香六月在线 | 久久大香线蕉综合爱 | 午夜精品免费 | 欧美成人三级视频 | 女人被爽到呻吟娇喘的视频动态图 | 在线观看免费国产视频 | 夜夜操伊人 | 美女三级毛片 | 色视频在线免费 | 日本国产最新一区二区三区 | 精品视频免费看 | 久久综合久久综合久久 | 国内久久精品视频 | 国产91播放 | 亚洲一区二区在线 | 中文一区在线 | 成人亚洲国产综合精品91 | 国内精品区一区二区三 | 久久精品a国产一级 | 日韩美女一级片 | 久久骚| 91色交视频| 色播在线永久免费视频 | 国产一区二区不卡视频 | 好吊操精品视频 | 好吊精品 |