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

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

int i = Test();
string " /> 免费看黄色片网站,一级做a免费视频,香蕉视频精品

一区二区久久-一区二区三区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技術如何實現用返回值重載,轉載需保留來源!

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

主站蜘蛛池模板: 黄视频在线观看免费视频 | chinese麻豆| 亚洲欧美视频 | 中文字幕一级毛片视频 | 涩涩涩涩涩涩涩涩涩涩 | 国产精品美女免费视频观看 | 成人精品视频在线 | 日本www在线观看 | 久久免费国产精品一区二区 | 午夜宅宅宅影院在线观看 | 激情图片在线 | 免费的黄色片视频 | 欧美一区a| 国产精品网址 | 美女黄色免费网站 | 国内视频一区 | 狠狠色成人综合首页 | 99久久伊人一区二区yy5099 | 91久久免费视频 | 91小视频在线播放 | 性感一级毛片 | 中文字幕一区二区在线播放 | 亚洲黄色美女 | 日本精品一区二区三区在线 | 久久国内精品自在自线观看 | 亚洲国产午夜 | 国产视频一区二区三区四区 | 波多野结衣在线影院 | 久久8| 91国内在线国内在线播放 | 草草草视频在线观看 | 日韩在线不卡一区在线观看 | 在线第一页 | 九九国产在线 | 国产精品短视频 | 在线国产视频 | 午夜激情免费视频 | 99综合之综合久久伊人 | 99久久精品国产高清一区二区 | 看全色黄大色黄大片大学生 | 国产精品国产三级国快看 |