List<T>中的T的类型,可以具体阐释一下吗?我从网上看到这样一行代码, List<ItemSet> L = new List<ItemSet>();请问其中的ItemSet是C#本身带的类型?还是需要自己定义?如果自己定义的话,应当把它定义成什么类型?

解决方案 »

  1.   

    ItemSet应该是自定义的,你自己随便定义什么都行
      

  2.   

    List<T> 是泛型。
    T可以是内置或是自定义的任何数据类型。
      

  3.   

    自带的也可以吧,但一般用泛型的话貌似都是自定义类型吧,关键是它的功能蛮强大的
    http://zhidao.baidu.com/question/253469688.html
    你可以看下
      

  4.   

    泛型list中的T可以是任意类型,当然也可以是你自定义的。这样你可以方便的将一个自定义类型加到列表,不必耗费装箱及拆箱的资源。提高性能,并且可以实现代码复用。
      

  5.   

    自定义,可以是用户对象,可以是数据int对象,字符串string的对象等
      

  6.   

    List<>是口袋,ItemSet是物品,随便你装什么,但是这个口袋只能装一种东西泛型避免了拆箱装箱
      

  7.   

    错误 5 无法将类型“System.Collections.ICollection”隐式转换为“int” 要怎么处理呀?
      

  8.   

    集合类型和int型可以转换吗
      

  9.   


    使用 List<T> 是无法转换的,因为这是系统定义的。
    如果需要直接转换的话,可以自定义一个 List。方法如下:
    public class MyList<T> : List<T>
    {
        public static implicit operator MyList<T>(int n)
        {
            MyList<T> myList = new MyList<T>();
            for (int i = 0; i < n; i++)
            {
                myList.Add(default(T));
            }
            return myList;
        }
    }// 调用代码如下:
    MyList<int> exlist = (MyList<int>)5;
    MyList<int> imlist = 10;
    Console.WriteLine(exlist.Count);
    Console.WriteLine(imlist.Count);
      

  10.   


    csdn这是搞什么?T不是一种类型,它只是类型的变量引用,或者说是模板,或者说是映射。就好象函数f(x)可以把复数x映射为向量,x只是一种变量表示。泛型List<T>的含义,就代表着可以把类型变量T映射为具体的类型,例如List<string>、List<User[]>、List<Control>、List<TextBox>等等,这些都是具体而不同的类型。特别是,虽然TextBox是Control的子类,但是List<TextBox>和List<Control>可是根本没有什么继承关系,完全是不相干的类型。(虽然.net4.0有关于泛型协变、逆变的概念,但是这不是来自于完备的继承知识,而是运行时的弱类型强制转换)。
      

  11.   

    以前c++中是使用“宏”的方式来实现模板,这就是说编译器在编译程序是就把这些模板所声明的类型,以宏扩展的方式展开成为一大堆各不相同的代码。例如你定义一个变量是 List<User[]>类型,那么宏扩展的方式就是在编译时由编译器去定义一个新类型(例如叫做macro@#$@@#$@$$%$%_@+User[]),它的代码跟List非常像,只不过其中的一些object声明为强类型的User[]了。显然如果程序中有100中List<T>的映射结果,那么就要在编译时自动产生100个新的类型。而其它的泛型的使用跟List<T>也是一样。.net是在JIT编译中才在更底层执行类似操作,那么其编译出来的程序就很小。