如何能做到函数返回值重载?
(转) 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