gpt4 book ai didi

c# - 选择基于返回类型的调用结构

转载 作者:行者123 更新时间:2023-11-30 19:40:27 25 4
gpt4 key购买 nike

我敢肯定这对于有经验的程序员来说是一个简单的问题,但我以前从来没有这样做过 - 假设我有一个如下所示的自定义对象:

public class MyClass
{
public Dictionary<string,string> ToDictString()
{
Dictionary<string,string> retval = new Dictionary<string,string>;
// Whatever code
return retval;
}

public Dictionary<string,int> ToDictInt()
{
Dictionary<string,int> retval = new Dictionary<string,int>;
// Whatever code
return retval;
}

}

因此,在我的代码中,我可以编写如下内容:

MyClass FakeClass = new MyClass();
Dictionary<string,int> MyDict1 = FakeClass.ToDictInt();
Dictionary<string,string> MyDict2 = FakeClass.ToDictString();

这很好用,但我想做的是在 MyClass 中调用一个方法,比如 ToDict() 根据预期的返回类型返回任一类型的字典

所以,例如,我会:

MyClass FakeClass = new MyClass();

// This would be the same as calling ToDictInt due to the return type:
Dictionary<string,int> MyDict1 = FakeClass.ToDict();

// This would be the same as calling ToDictString due to the return type:
Dictionary<string,string> MyDict2 = FakeClass.ToDict();

所以,一个方法名称,但它知道根据要返回的变量返回什么......我将如何在我的类中编写方法来做到这一点?

非常感谢!

最佳答案

这是不可能的。重载决议算法不考虑方法调用表达式的上下文,因此会导致您提到的示例中出现歧义错误。

您需要有两个不同的方法名称(或参数列表中的不同)才能使方法具有不同的返回类型。

关于c# - 选择基于返回类型的调用结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23394699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com