【发布时间】:2013-06-05 03:14:31
【问题描述】:
假设你有一个类,它有使用 T 的方法。你也有同名的标准方法。
如果 T 与标准方法的类型相同,会发生什么?调用标准方法。
有什么办法可以强制他调用T方法吗?
使用系统;
namespace ConsoleApplication3
{
class Program
{
static void Main()
{
Generics<Int32> anInt = new Generics<Int32>(4);
Generics<String> aString = new Generics<String>("test");
}
}
public class Generics<T>
{
public T Member;
public String ErrorMessage;
public Generics(T member)
{
this.Member = member;
}
public Generics(String errorMessage)
{
this.ErrorMessage = errorMessage;
}
}
}
【问题讨论】:
-
你检查this了吗?
-
如果你知道已经存在同名方法,你应该重命名你的方法,想象另一个程序员继承你的代码。
-
谢谢,sq33G,现在我知道如何规避它了。我的情况有点不同。我从 Generics
派生并编写了正确处理它的构造函数。 -
@Sayse 这是一个构造函数,重命名并不完全是一个选项。 ;)
-
不要像这样在泛型构造下创建统一方法的类型。最初这将在版本 2 中被定为非法。这是一种不好的做法,会导致实现定义的行为。
标签: c# generics overloading