none
List 能否传递不同类型的参数 RRS feed

  • 问题

  • 假如List<T>中有不同的类,比如:testclass1、testclass2,等等,现在如何把这个List<T>参数传递进来.(我知道用ArrayList可以)

    List<testclass1> Lt1 = new List<testclass1> ();

    List<testclass2> Lt2 = new List<testclass2> ();

    void test (List<T> Plt)

    {.............}

    void execute ( )

    {

    test (Lt1);

    test(Lt2);

    }

    2012年11月13日 22:30

答案

  • 你好:程序小匠

    你应该定义一个父类,testclass;然后testclass1和testclass2都继承自testclass。

    然后将不同的testclass1和testclass2实例加入到List<testclass>中去。

    void test(List<testclass> Plt)

    {

    }

    2012年11月14日 0:55
  • dear

    若类别的栏位都相同,可使用泛型约束

    http://www.dotblogs.com.tw/yc421206/archive/2011/05/19/25543.aspx

    public interface IPrint
    {
        string Name { get; set; }
        string Address { get; set; }
    }
    public class Company : IPrint
    {
        public string Name { get; set; }
        public string Address { get; set; }
    }
    
    public class Family : IPrint
    {
        public string Name { get; set; }
        public string Address { get; set; }
    }
    
    public static string PrintName<T>(T Component) where T : IPrint
    {
        if (Component == null)
        {
            return null;
        }
        else
        {
            string data = null;
            data = string.Format("名稱:{0},地址:{1}", Component.Name, Component.Address);
            return data;
        }
    }


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/


    2012年11月14日 2:05

全部回复

  • 你好:程序小匠

    你应该定义一个父类,testclass;然后testclass1和testclass2都继承自testclass。

    然后将不同的testclass1和testclass2实例加入到List<testclass>中去。

    void test(List<testclass> Plt)

    {

    }

    2012年11月14日 0:55
  • 谢谢您!简单又好用!

    2012年11月14日 1:17
  • 不客气!

    2012年11月14日 1:34
  • dear

    若类别的栏位都相同,可使用泛型约束

    http://www.dotblogs.com.tw/yc421206/archive/2011/05/19/25543.aspx

    public interface IPrint
    {
        string Name { get; set; }
        string Address { get; set; }
    }
    public class Company : IPrint
    {
        public string Name { get; set; }
        public string Address { get; set; }
    }
    
    public class Family : IPrint
    {
        public string Name { get; set; }
        public string Address { get; set; }
    }
    
    public static string PrintName<T>(T Component) where T : IPrint
    {
        if (Component == null)
        {
            return null;
        }
        else
        {
            string data = null;
            data = string.Format("名稱:{0},地址:{1}", Component.Name, Component.Address);
            return data;
        }
    }


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/


    2012年11月14日 2:05