如何能做到函数返回值重载?简单的说就是如何实现 stringTest() {} 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(); 怎么样并没有使用很高深的语法就实现了想要的东西 |