永发信息网

C#的泛型怎么用啊。

答案:2  悬赏:10  手机版
解决时间 2021-08-21 08:04
举个例子
最佳答案

// Declare the generic class


public class GenericList<T>


 {


void Add(T input) { }


}


class TestGenericList {


private class ExampleClass { }


static void Main() {


// Declare a list of type


int GenericList<int> list1 = new GenericList<int>();


 // Declare a list of type


string GenericList<string> list2 = new GenericList<string>();


// Declare a list of type


ExampleClass GenericList<ExampleClass> list3 = new GenericList<ExampleClass>();


}


}


全部回答

泛型是 C#2.0 语言和公共语言运行库 (CLR) 中的一个新功能。泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。例如,通过使用泛型类型参数 T,可以编写其他客户端代码能够使用的单个类,而不致引入运行时强制转换或装箱操作. 使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。 泛型最常见的用途是创建集合类。

    .NET Framework 类库在 System.Collections.Generic 命名空间中包含几个新的泛型集合类。应尽可能地使用这些类来代替普通的类,如 System.Collections 命名空间中的 ArrayList,HashTable等。下面我们就来说下,几个泛型集合类的用法:一.Dictionary 和HashTable类似此类在 .NET Framework 2.0 版中是新增的。表示键和值的集合。命名空间:System.Collections.Generic,程序集:mscorlib(在mscorlib.dll 中)     class TestGenericList     {     static void Main()     {     //声明对象,参数表示,键是int类型,值是string类型     Dictionary<int, string> fruit = new Dictionary<int, string>();     try{     //加入重复键会引发异常     fruit.Add(1, "苹果");     fruit.Add(2, "桔子");     fruit.Add(3, "香蕉");     fruit.Add(4, "菠萝");         //参数错误将引发异常,如下所示     //fruit.Add("5", "aa");     }     catch (ArgumentException)     {     Console.WriteLine("添加错误!!!");     }     //因为引入了泛型,所以键取出后不需要进行Object到int的转换,值的集合也一样     foreach (int i in fruit.Keys)     {     Console.WriteLine("键是:{0} 值是:{1}",i,fruit);     }    按键值对遍历:     foreach(KeyValuePair keyValue in fruit)     {     Console.WriteLine("键是:{0} 值是:{1}", keyValue.Key, keyValue.Value);     }     //删除指定键,值     fruit.Remove(1);     //判断是否包含指定键     if (fruit.ContainsKey(1))     {     Console.WriteLine("包含此键");     }     //清除集合中所有对象     fruit.Clear();     }     }    Dictionary遍历输出的顺序,就是加入的顺序,这点与Hashtable不同,其它方法如:ContainsKey ,ContainsValue ,Remove 等,使用方法基本一致。二、List类    注意:此类在 .NET Framework 2.0 版中是新增的。表示可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法。命名空间:System.Collections.Generic,程序集:mscorlib(在 mscorlib.dll 中),List 类是 ArrayList 类的泛型等效类。    //声明一个泛型类        class TestGenericList     {     static void Main()     {     //声明一个List对象和ArrayList对应,只加入string参数     List<string> names = new List<string>();     names.Add("乔峰");     names.Add("欧阳峰");     names.Add("马蜂");     //遍历List     foreach (string name in names)     {     Console.WriteLine(name);     }     //向List中插入元素     names.Insert(2, "张三峰");     //移除指定元素     names.Remove("马蜂");         }     }     在决定使用 List 还是使用 ArrayList 类(两者具有类似的功能)时,记住 List 类在大多数情况下执行得更好并且是类型安全的。如果对 List 类的类型 T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型 T 使用值类型,则需要考虑实现和装箱问题。    如果对类型 T 使用值类型,则编译器将特别针对该值类型生成 List 类的实现。这意味着不必对 List 对象的列表元素进行装箱就可以使用该元素,并且在创建大约 500 个列表元素之后,不对列表元素装箱所节省的内存将大于生成该类实现所使用的内存。   其实我们也可以自己定义一个泛型类,如下所示:     //声明一个泛型类     public class ItemList<T>     {     void Add(T item) { }     }     class TestGenericList     {     private class ExampleClass { }     static void Main()     {     // 声明一个对象,只能加入int型     ItemList<int> list1 = new ItemList<int>();    //声明一个对象,只能加入Student类型,Student类为自定义类     ItemList<Student> list2 = new ItemList<Student>();    }     }   泛型的用法还有很多种,如泛型方法,泛型委托,泛型接口等。

泛型是 C#2.0 语言和公共语言运行库 (CLR) 中的一个新功能。泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。例如,通过使用泛型类型参数 T,可以编写其他客户端代码能够使用的单个类,而不致引入运行时强制转换或装箱操作. 使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。 泛型最常见的用途是创建集合类。

    .NET Framework 类库在 System.Collections.Generic 命名空间中包含几个新的泛型集合类。应尽可能地使用这些类来代替普通的类,如 System.Collections 命名空间中的 ArrayList,HashTable等。下面我们就来说下,几个泛型集合类的用法:一.Dictionary 和HashTable类似此类在 .NET Framework 2.0 版中是新增的。表示键和值的集合。命名空间:System.Collections.Generic,程序集:mscorlib(在mscorlib.dll 中)     class TestGenericList     {     static void Main()     {     //声明对象,参数表示,键是int类型,值是string类型     Dictionary<int, string> fruit = new Dictionary<int, string>();     try{     //加入重复键会引发异常     fruit.Add(1, "苹果");     fruit.Add(2, "桔子");     fruit.Add(3, "香蕉");     fruit.Add(4, "菠萝");         //参数错误将引发异常,如下所示     //fruit.Add("5", "aa");     }     catch (ArgumentException)     {     Console.WriteLine("添加错误!!!");     }     //因为引入了泛型,所以键取出后不需要进行Object到int的转换,值的集合也一样     foreach (int i in fruit.Keys)     {     Console.WriteLine("键是:{0} 值是:{1}",i,fruit);     }    按键值对遍历:     foreach(KeyValuePair keyValue in fruit)     {     Console.WriteLine("键是:{0} 值是:{1}", keyValue.Key, keyValue.Value);     }     //删除指定键,值     fruit.Remove(1);     //判断是否包含指定键     if (fruit.ContainsKey(1))     {     Console.WriteLine("包含此键");     }     //清除集合中所有对象     fruit.Clear();     }     }    Dictionary遍历输出的顺序,就是加入的顺序,这点与Hashtable不同,其它方法如:ContainsKey ,ContainsValue ,Remove 等,使用方法基本一致。二、List类    注意:此类在 .NET Framework 2.0 版中是新增的。表示可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法。命名空间:System.Collections.Generic,程序集:mscorlib(在 mscorlib.dll 中),List 类是 ArrayList 类的泛型等效类。    //声明一个泛型类        class TestGenericList     {     static void Main()     {     //声明一个List对象和ArrayList对应,只加入string参数     List<string> names = new List<string>();     names.Add("乔峰");     names.Add("欧阳峰");     names.Add("马蜂");     //遍历List     foreach (string name in names)     {     Console.WriteLine(name);     }     //向List中插入元素     names.Insert(2, "张三峰");     //移除指定元素     names.Remove("马蜂");         }     }     在决定使用 List 还是使用 ArrayList 类(两者具有类似的功能)时,记住 List 类在大多数情况下执行得更好并且是类型安全的。如果对 List 类的类型 T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型 T 使用值类型,则需要考虑实现和装箱问题。    如果对类型 T 使用值类型,则编译器将特别针对该值类型生成 List 类的实现。这意味着不必对 List 对象的列表元素进行装箱就可以使用该元素,并且在创建大约 500 个列表元素之后,不对列表元素装箱所节省的内存将大于生成该类实现所使用的内存。   其实我们也可以自己定义一个泛型类,如下所示:     //声明一个泛型类     public class ItemList<T>     {     void Add(T item) { }     }     class TestGenericList     {     private class ExampleClass { }     static void Main()     {     // 声明一个对象,只能加入int型     ItemList<int> list1 = new ItemList<int>();    //声明一个对象,只能加入Student类型,Student类为自定义类     ItemList<Student> list2 = new ItemList<Student>();    }     }   泛型的用法还有很多种,如泛型方法,泛型委托,泛型接口等。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
全国各地都有娇子这种烟么?
短期留学英语怎么说,我去韩国留学 用英文怎么
泗洪哪里有卖移动充值卡
热力学基础,对于室温下定体摩尔热容=2.5R的理
十一周年是什么婚,结婚十一年是什么婚
冷水江市娄底水蜜桃K歌足浴地址是什么,有没
英语中考作文万能句子,英语初中作文30篇 每篇
电脑问题,明白的进入!
地下城怎样玩啊?
鲁教版!2012年11月24日出版的
QQ加好友几天后才可以给好友充DNF点券?
宠物熊里的打开好友的池塘怎么打
2018年7月1日到2019年6月7日还有多少天
汉南区武汉汉南区乌金西瓜协会哪位知道具体地
哪种生物被称为活化石,活化石是种系发生中的
推荐资讯
梦幻西游号被盗了,咋弄
推荐一下 性价比比较好的mp4
婚姻是怎么?
关于坚守本心的句子,远离世态污浊,守住本心的
手机QQ牧场何时推出
人为何会感到空虚?死亡的味道正在慢慢靠近。
执子之手 与子谐老 谁又能真正理解?
电脑CPU有故障了会出现哪些现象?
谁帮我把财富通图标点亮?要怎么点
怎么才能忘记一个真正爱过的人
爱情可以多久
我上次在淘宝花了1000块买了奥特曼变身器。为
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?