日期:2014-05-18  浏览次数:20913 次

一个方法要接受多个未知的类,这个参数类型怎么定义?
比如:
public void method(T t){}
这个方法,t是多种未知的类class1、class2等。
这个T怎么定义?

------解决方案--------------------
C# code

        private void Foo<T>(T obj)
        {
        }

------解决方案--------------------
public void method<T>(T t){}

------解决方案--------------------
定义了也没用,都不知道是什么类你又怎么去处理它?

至少你要知道它究竟是什么类。
------解决方案--------------------
探讨
比如:
public void method(T t){}
这个方法,t是多种未知的类class1、class2等。
这个T怎么定义?

------解决方案--------------------
这个T代表类型的意思,取决于调用处传递的类型,在编译时,由编译器统一替换。

------解决方案--------------------
不知道是什么类型的话你怎么去调用呢?比如说你调用这个方法需要返回一个字符串,但是你不知道这个方法到底返回什么类型,那你怎么去使用呢?
------解决方案--------------------
C# code

比如泛型方法定义:
void Swap<T>(ref T lhs, ref T rhs)
{
    T temp;
    temp = lhs;
    lhs = rhs;
    rhs = temp;
}


调用:
void TestSwap()
{
    int a = 1;
    int b = 2;

    Swap<int>(ref a, ref b);
    System.Console.WriteLine(a + " " + b);
}

------解决方案--------------------
C# code

public void method(params object[] objs){}

------解决方案--------------------
探讨
比如:
public void method(T t){}
这个方法,t是多种未知的类class1、class2等。
这个T怎么定义?

------解决方案--------------------
那些个类有关系吗?
class Class1 : ClassBase
{}
class Class2 : ClassBase
{}
class ClassBase
{}
你可以这样做。
 public void Func<T>(T args)
{
ClassBase cb = args as ClassBase;
//后续操作
}