是否可以使泛型类中的方法对于特定类型的行为完全不同?
class MyClass<T> {
public void myMethod(T t) { // Do something }
// something for myMethod(int t) { // DO something special }
}
Run Code Online (Sandbox Code Playgroud)
以这样的方式,允许我调用(new MyClass<String>()).myMethod(myString)它会做一些事情,也可以调用(new MyClass<int>()).myMethod(myInt)它会做一些特殊的事情。
我认为你最好使用重载,而不是泛型。
例如:
public void myMethod(int t)
{
}
public void myMethod(string t)
{
}
Run Code Online (Sandbox Code Playgroud)
您可以在泛型中进行类型检查,但这不是最佳实践。
根据您的编辑和讨论,我相信这就是您想要的:
class Program
{
static void Main(string[] args)
{
IntClass c1 = new IntClass();
c1.MyMethod(12);
BaseClass<string> c2 = new BaseClass<string>();
c2.MyMethod("hello world");
}
}
class BaseClass<T>
{
public virtual void MyMethod(T t)
{
Console.WriteLine(string.Format("Param: {0}", t));
}
}
class IntClass : BaseClass<int>
{
public override void MyMethod(int myVar)
{
Console.WriteLine(string.Format("Param: int"));
}
}
Run Code Online (Sandbox Code Playgroud)