首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重载方法调用重载方法

重载方法调用重载方法
EN

Stack Overflow用户
提问于 2009-01-07 23:31:59
回答 6查看 2.9K关注 0票数 3

我有一个我正在编写的方法,它调用了其中的另一个重载方法。我只想写一个外部方法,因为外部方法的参数是传递给内部方法的。有没有办法做到这一点?

我试着使用泛型,但我对此了解不够多,所以它不起作用:

代码语言:javascript
复制
public void OuterMethod<T>(T parameter)
{
    InnerMethod(parameter); // InnerMethod accepts an int or a string
}

我知道我可以做到:

代码语言:javascript
复制
public void OuterMethod(string parameter)
{
    InnerMethod(parameter);
}

public void OuterMethod(int parameter)
{
    InnerMethod(parameter);
}

但我更愿意用正确的方式来做这件事,而不是复制/粘贴代码。实现这一目标的最佳方法是什么?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-01-07 23:44:05

您可以在C++中执行此操作,但不能在C#中执行此操作(除非内部方法也可以是泛型的,而不是重载的)。

或者(如果您不接受'no‘作为答案),您可以在运行时打开type,例如...

代码语言:javascript
复制
public void OuterMethod(object parameter)
{
    if (parameter is int)
        InnerMethod((int)parameter);
    else if (parameter is string)
        InnerMethod((string)parameter);
    else
        throw new SomeKindOfException();
}

..。但很明显,这是运行时检查,而不是编译时检查。

,但我更愿意用正确的方式来做这件事,而不是复制/粘贴代码。

您也可以编写软件来编写您的外部方法(例如使用System.CodeDom类),而不是手动编写它们,但这可能会带来更多的麻烦。

票数 4
EN

Stack Overflow用户

发布于 2009-01-08 00:06:35

就像其他人说的,你不能真的做你想做的事情,而你在问题中陈述的选择是最好的选择。

如果使用泛型,则实际上必须转换该值。否则,您可以像ChrisW建议的那样,通过接受对象来进行向下转换。

代码语言:javascript
复制
 public void OuterMethod<T>(T parameter) 
            {
                T temp = parameter;
                if (temp is string )
                    InnerMethod(Convert.ToString(temp));
                if (temp is int)
                    InnerMethod(Convert.ToInt32(temp));// InnerMethod accepts an int or a string
            }

下面是泛型概述的链接:http://msdn.microsoft.com/en-us/library/ms172193.aspx

票数 2
EN

Stack Overflow用户

发布于 2009-01-08 00:57:47

从您的描述来看,这似乎是过度优化。

这样如何:

代码语言:javascript
复制
public void OuterMethod(string parameter)
{
    InnerMethod(parameter);
}

public void OuterMethod(int parameter)
{
    InnerMethod(parameter**.ToString()**);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/422625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档