【问题标题】:Distinguishing Between Overloaded Generic and Non-Generic Methods区分重载的泛型和非泛型方法
【发布时间】:2013-07-08 07:21:37
【问题描述】:

这必须在某处涵盖,但我很难表达我的搜索条件,所以...

下面是同类型声明的三个实例方法。

void Invoke(int timeout);
void Invoke<T>(T data);
T Invoke<T>(int timeout);

我想调用第二种方法,传递一个 Int32 参数并且不使用反射。选项包括:

Invoke(1);
Invoke<int>(1);
Invoke((int)1);
Invoke<int>((int)1);

但是,这些都没有调用所需的方法。我可以实现我想要的还是应该求助于方法重命名?

请注意,如果第三种方法不存在,我可以简单地这样做:

Invoke(1); // Invokes the first method
Invoke<int>(1); // Invokes the second method

【问题讨论】:

  • 当你传递它时,不是你的问题命名参数的解决方案吗?调用(超时:1);
  • 天哪,原来如此。多年来我一直在这样做,但不知道这是可能的。
  • 是的,我知道可选参数。不知道我是如何错过命名参数的。感谢您的链接。

标签: c# generics overloading


【解决方案1】:

使用命名参数:

Invoke(data: 1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    相关资源
    最近更新 更多