熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

如何實現用返回值重載

2013-11-13 10:22:47  來源: .NET編程 

  如何能做到函數返回值重載?簡單的說就是如何實現

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 Im a string;
    }

  int TestInt()
    {
        return ;
    }

  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 helperm_hostTestInt();
        }

  public static implicit operator string(TestHelper helper)
        {
            return helperm_hostTestString();
        }
    }
}
調用的語法非常之完美

Foo f = new Foo();
int i = fTest();
string s = fTest();

  怎麼樣並沒有使用很高深的語法就實現了想要的東西


From:http://tw.wingwit.com/Article/program/net/201311/13428.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.