c# - 通用 - 编译器警告 CS0693 或错误

我有我的通用类和两个接受委托(delegate)作为参数的方法(无论是否通用)

public sealed class MyClass<TResult>
{
   public MyClass ContinueWith(ThreadInfo.Parameterized arg)
   {
   }

   public MyClass<TResult> ContinueWith<TResult>(ThreadInfo<TResult>.Parameterized arg)
   {
   }
}

在哪里:
public sealed class MyClass
{
}

我有 Compiler Warning (level3) CS0693但如果我删除 <TResult>从第二种方法:
public MyClass<TResult> ContinueWith(ThreadInfo<TResult>.Parameterized arg)

我不能再使用这种方法了,如果我尝试我得到一个编译器错误,因为编译器认为我想使用第一种方法。

我怎么解决这个问题?

最佳答案

听起来你真的想要:

public MyClass<TResult> ContinueWith(ThreadInfo<TResult>.Parameterized arg)

换句话说,使用 TResult在类型级别声明的参数。

如果你真的希望它是一个泛型方法(即引入一个新的类型参数)你必须给它一个不同的名字:
public MyClass<T2> ContinueWith<T2>(ThreadInfo<T2>.Parameterized arg)

(您可能希望在此处返回 MyClass<TResult> 或类似内容 - 我们并不真正知道您要达到的目标,因此很难提供详细的帮助。)

https://stackoverflow.com/questions/13192295/

相关文章:

android - 从现有代码创建新项目

asp.net-mvc - 访问asp.net mvc Controller ActionResul

scala - 卡在类型不匹配

emulation - 游戏男孩 : What constitutes a "half-carry"

apache-kafka - Kafka + Zookeeper : Connection to n

c# - “does not contain a static '主要' method”错误

compiler-errors - 为什么 'dsgaudiko'有效的PHP?

objective-c - 架构armv7和Phonegap的 undefined symbol

c# - 排序列表>,错误: InvalidOperati

r - R中仅Unix的软件包错误