惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
WordPress大学
WordPress大学
博客园 - Franky
The Cloudflare Blog
T
Tailwind CSS Blog
宝玉的分享
宝玉的分享
小众软件
小众软件
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
B
Blog
Y
Y Combinator Blog
V
V2EX
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
博客园 - 司徒正美
IT之家
IT之家
G
Google Developers Blog
C
Check Point Blog
Engineering at Meta
Engineering at Meta
Microsoft Security Blog
Microsoft Security Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - 十二随风

CSDN有个新家 Windows Server 2008常用优化设置 ASP.NET程序中常用的三十三种代码(转载) .NET中如何取得汉字或者拼音首字母(附源代码) c#2.0新特性:(三)迭代器(Iterators) c#2.0新特性:(二)匿名方法(Anonymous Methods) SQL语句导入导出大全(转载) - 十二随风 - 博客园 SQL数据库的打包部署安装 ClickOnce部署WinForm应用程序 如何在DataGrid控件中实现自定义分页 如何在ASP.NET中实现验证码? 使用APPlication,Session,Cookie和ViewState等对象保存信息的区别是什么? 客户端JavaScript实现监视用户键盘输入(只能输入数字,最大输入8个) 如何用Response.Redirect方法传递汉字 如何处理多页面重定向到同一页面后的返回问题 如何实现服务器端下页面动态添加JavaScript脚本 ExecuteReader(),ExecuteNonQuery(),ExecuteScalar(),ExecuteXmlReader()之间的区别 经典的三层设计 刷新aspx页面的六种方法
c#2.0新特性:(一)泛型(Generics)
十二随风 · 2007-01-31 · via 博客园 - 十二随风

为了提高应用程序的效率和可用性,C#2.0引入了泛型概念.C#泛型有些类似C++的摸版。
(一)特点  
      泛型具有以下功能特点:
     一、使用泛型可以定义类型安全的数据结构,而无需使用实际的数据类型。
     二、通过使用泛型,能够将数据类型参数化,以此完成代码重用的目标。这一参数可以应用在类、方法、结构、接口、委托等设计中。
     三、泛型可提供编译期间的类型检查,减少不必要的显式类型转换,减少不必要的装箱操作,从而提高应用程序的运行效率。
(二)泛型集合
      泛型常用于集合应用中。在.NET2.0框架的类库中,提供了一个新的命名空间System.Collections.Generic,其中包含了一些新的基于泛型的容器类,例如:System.Collections.Generic.StackSystem.Collections.Generic.Dictionary、System.Collections.Generic.List、System.Collections.Generic.Queue等,这些类库可以在集合中实现泛型。
      下面是一个Stack类具体的应用代码:

        //实列化Stack类
        System.Collections.Generic.Stack<string> stringStack=new System.Collections.Generic.Stack<string>();
        
//添加数据
        stringStack.Push("常德");
        stringStack.Push(
"北京");
        stringStack.Push(
"武汉");
        
//转换为数组
        Array stringArray;
        stringArray
=stringStack.ToArray();
        
//显示数组
        foreach(string s in stringArray)
        
{
            Response.Write(s);
        }

      以上代码中,首先实例化了一个Stack类的stringStack,并且设置其参数是string,这说明该类所实现堆栈的数据类型是string。然后,通过Stack类的Push方法压入3个字符串数据,并且使用ToArray方法,将堆栈中的数据转换到一个数组stringArray中(此时,stringArray是一个字符串数组)。最后,使用Response.Write( )方法将数组中的数据显示出来(逆序显示,这是堆栈的特性)。
      另外,如果要求堆栈中存储的是int类型,那么可以使用同样的方法,只需要修改很少的内容即可实现。 
(三)泛型方法 
      在某些情况下,一个类型参数并不为整个类所必需,而只用于一个特定的方法中。这个情况竟法发上在建立一个需要泛型作为参数的方法时。
      一个泛型方法有一个或多个类型参数,并且在方法名后面由“<”和“>”限定符指定。这个类型参数可以用在参数利表、返回值和方法体中。

    public void StackPush<T>(Stack<T> stack, params T[] values)
    
{
        
foreach (T value in values)
        
{
            stack.Push(value);
        }

    }

      使用这个方法,可以将多个元素压入任何Stack<T>中。当调用一个泛型方法时,要在函数的调用中将类型参数放入尖括号中。示例代码如下:


        Stack
<int> stack = new Stack<int>();
        StackPush
<int>(stack, 1234);

      在上面的例子中,由于第一个正式参数类型是Stack<int>,并且后面的参数类型都是int,编译器可以推断类型参数一定是int,因此在调用泛型的StackPush方法时可以不用提供类型参数。


        Stack
<int> stack = new Stack<int>();
        StackPush(stack, 
1234);