c#中的泛型和泛型集合

会飞的豆子 会飞的豆子     2022-08-24     327

关键词:

泛型

泛型引入了一个概念:类型参数。通过使用类型参数(T)减少了运行时强制转换或装箱操作的风险,通过泛型可以最大限度的重用代码,保护类型的安全及提高性能,他的最常见应用就是创建集合类,可以约束集合类中的元素类型。比较典型的泛型集合是List<T>和Dictionary<>;

泛型集合List<T>

语法

List<T>对象名=new List<T>();

List<T>与ArrayList的区别

异同点                        List<T>                              ArrayList

不同点                     对所保存元素做类型约束            可以增加任何类型

                              添加/读取值类型元素无须拆箱,装箱       添加/读取值类型元素需要拆箱,装箱

相同点                    通过索引访问集合中的元素

                             添加元素方法相同

                             删除元素方法相同

泛型集合Dictionary<K,V>

语法

Dictionary<K,V>对象名=new Dictionary<K,V>();

例如:

Dictionary<string,SE>engineers=new Dictionary<string,SE>();

                                            Dictionary和Hashtable的对比

   异同点                      Dictionary<K,V>                                   Hashtable

 不同点                        对所保存元素做类型约束                            可以增加任何类型

                                  添加/读取值类型元素无须拆箱,装箱            添加/读取值类型元素需要拆箱,装箱

 相同点                        通过Key获取Value

                                  添加元素方法相同

                                  删除元素方法相同

                                  遍历方法相同

Dictionary还可以采用下面的方式

foreach(KeyValuePair<string,SE> en in engineers){
 Console.WriteLine(en.Key);

Console.WriteLine(en.Value.Name);
}

泛型类

语法

public class 类名<T>{
  //。。。。。。。。
}

 

 
 

泛型的泛型的好处

...合类,如ArrayList。有关更多信息,请参见.NETFramework类库中的泛型(C#编程指南)。当然,也可以创建自定义泛型类型和方法,以提供自己的通用解决方案,设计类型安全的高效模式。下面的代码示例演示一个用于演示用途的简单... 查看详情

扩展类型的泛型和 Typescript 中的普通类型有啥区别?

】扩展类型的泛型和Typescript中的普通类型有啥区别?【英文标题】:WhatisthedifferencebetweenagenericthatextendsatypeandanormaltypeinTypescript?扩展类型的泛型和Typescript中的普通类型有什么区别?【发布时间】:2020-05-2317:32:00【问题描述】:Ty... 查看详情

详解c#泛型(代码片段)

  一、C#中的泛型引入了类型参数的概念,类似于C++中的模板,类型参数可以使类型或方法中的一个或多个类型的指定推迟到实例化或调用时,使用泛型可以更大程度的重用代码、保护类型安全性并提高性能;可以创建自定义... 查看详情

Java中的泛型和子类型问题[重复]

】Java中的泛型和子类型问题[重复]【英文标题】:GenericsandSubtypeproblemsinJava[duplicate]【发布时间】:2017-01-1515:15:25【问题描述】:首先,由于java有严格的类型系统,程序在编译时检查类型正确性,并在执行前将类加载到字节码验... 查看详情

java基础语法java的泛型和包装类(代码片段)

前言:本章主要是为了后面学习集合框架所做的知识补充。补充了泛型以及包装类两个知识,但是该章泛型的讲解不够全面,主要是为了集合框架学习做铺垫。文章目录1.预备知识-泛型(Generic)1.1泛型的引入1... 查看详情

trait 的泛型类型和泛型关联类型之间有啥区别?

】trait的泛型类型和泛型关联类型之间有啥区别?【英文标题】:What\'sthedifferencebetweenatrait\'sgenerictypeandagenericassociatedtype?trait的泛型类型和泛型关联类型之间有什么区别?【发布时间】:2019-07-1411:02:50【问题描述】:这个问题是... 查看详情

C# 中的多态、重载和泛型

】C#中的多态、重载和泛型【英文标题】:Polymorphism,overloadsandgenericsinC#【发布时间】:2012-01-2011:42:57【问题描述】:classPolypublicstaticvoidWriteVal(inti)System.Console.Write("0\\n",i);publicstaticvoidWriteVal(strings)System.Console.Write("0\\n", 查看详情

c# Reflection - 查找集合的泛型类型

】c#Reflection-查找集合的泛型类型【英文标题】:c#Reflection-FindtheGenericTypeofaCollection【发布时间】:2011-02-0309:37:45【问题描述】:我正在反映一个属性“Blah”,它的类型是ICollectionpublicICollection<string>Blahget;set;privatevoidbutton1_Clic... 查看详情

java里的泛型和通配符

...象A继承了K这个类,某一个对象B继承V这个类2.Map.Entry是map中的一个方法,该方法可以返回一个对象的集合,那么现在得这个集合就是,A,B所组成的集合3.iterator迭代器类似于for循环,将A,B这个集合迭代出来,取出A,B单独的对象希... 查看详情

java中的泛型方法

java中的泛型方法:是否拥有泛型方法。与其所在的类是否泛型没有关系。泛型的声明,必须在方法的修饰符(public,static,final,abstract等)之后。返回值声明之前。和泛型类一样,能够声明多个泛型,用逗号隔开。一个st... 查看详情

C# 中的泛型与非泛型性能

】C#中的泛型与非泛型性能【英文标题】:Genericvsnot-genericperformanceinC#【发布时间】:2013-06-2520:53:27【问题描述】:我写了两个等价的方法:staticboolF<T>(Ta,Tb)whereT:classreturna==b;staticboolF2(Aa,Ab)returna==b;时差:00:00:00.038002200:00:00.01... 查看详情

java基础语法详解java中的泛型(代码片段)

...xff0c;而今天这章再配合之前那章,将会完整的介绍Java中的泛型!文章目录1.前章回顾1.1泛型类的代码示例1.2泛型类的意义1.3泛型是如何编译的2.泛型类的定义2.1语法2.2示例3.内部类3.1概念3.2实例内部类3. 查看详情

集合中的泛型

为什么要有泛型?解决元素存储的安全问题(集合没有泛型时,任何类型都可以添加进集合,类型不安全)解决获取数据元素时,需要类型强转的问题(读取集合元素强转时很繁琐,可能会报ClassCastException)关于以上两点的说明... 查看详情

c#中的泛型

泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性。泛型为.NET框架引入了类型参数(typeparameters)的概念。类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明、实... 查看详情

c#中arraylist和泛型集合list方法概述概述

首先,ArrayList集合和List都是非静态类,使用时都必须先实列化。ArrayList类似一个数组,但比数组优越的是它的长度大小可变,并且可以存放不同类型的变量,包括值类型和引用类型。常用方法如下:1、Add():方法用于添加一个元... 查看详情

c#中的泛型委托(@whitetaken)

今天学习一下c#中的泛型委托。1.一般的委托,delegate,可以又传入参数(<=32),声明的方法为 publicdelegatevoidSomethingDelegate(inta);1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Text;5usingSystem.Th 查看详情

c#中的泛型

...解一下泛型的定义:泛型允许我们延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。(也就是说泛型是可以与任何数据类型一起工作的类或方法)模块内高内聚,模块间低... 查看详情

java:effectivejava学习笔记之优先考虑泛型和泛型方法(代码片段)

Java优先考虑泛型和泛型方法1、优先考虑泛型2、优先考虑泛型方法参考1、优先考虑泛型下面我们举个例子,将他作为泛型化的主要备选对象,换句话说,可以适当的强化这个类来利用泛型。publicclassStackprivateObject[]elem... 查看详情