Visual C# 2.0泛型编程基础

2016-02-19 15:22 2 1 收藏

下面是个Visual C# 2.0泛型编程基础教程,撑握了其技术要点,学起来就简单多了。赶紧跟着图老师小编一起来看看吧!

【 tulaoshi.com - 编程语言 】

  最近频繁的接触到泛型方面的问题,所以也不得不来学习一下了,开始主要是在MSDN的WebCast上去下载教学录象看的(李建忠老师的),本篇文章先介绍一下泛型入门方面的知识,希望能让刚开始学习泛型的朋友能够更快的入门,言归正传,首先我们来看一下泛型的基本概念。

  最显著的一点就是它参数化了类型,把类型作为参数抽象出来,从而使我们在实际的运用当中能够更好的实现代码的重复利用,同时它提供了更强的类型安全,更高的效率,不过在约束方面,它只支持显示的约束,这样在灵活性方面就显得不是那么好了。我觉得它之所以能够提供更高的效率是因为泛型在实例化的时候采用了"on-demand"的模式,即按需实例化,发生在JIT(Just In Time)编译时。

  下面来看如何定义一个泛型类,很简单,你只需要意识到一点,在这里,类型已经被参数化了:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  

using System;using System.Collections.Generic;using System.Text;namespace GenericTest{ class Program {  static void Main(string[] args)  {   //使用string,int来实例化TestT,S类   Teststring, int t = new Teststring, int("SHY520",22);   //调用泛型类中的方法   t.SetValue();  } } /**//// summary /// 定义一个泛型类,该类有两个类型参数,分别是T,S /// http://pw.cnblogs.com /// /summary /// typeparam name="T"类型参数/typeparam /// typeparam name="S"类型参数/typeparam public class TestT,S {  //泛型类的类型参数可用于类成员  private T name;  private S age;  public Test(T Name,S Age)  {   this.name = Name;   this.age = Age;  }  public void SetValue()  {   Console.WriteLine(name.ToString());   Console.WriteLine(age.ToString());  } }}

  上面的例子不是很恰当,目的是让初学泛型的你了解一下泛型的定义及实例化方法,如上,我们定义了一个泛型类,那么如何实现泛型类的继承呢?这里需要满足下面两点中的任何一点即可:

  1、泛型类继承中,父类的类型参数已被实例化,这种情况下子类不一定必须是泛型类;

  2、父类的类型参数没有被实例化,但

  

using System;using System.Collections.Generic;using System.Text;namespace GenericTest{ class GenericClass {  //申明一个泛型方法  public T getvalueT(T t)  {   return t;  }  //调用泛型方法  //注意:在调用泛型方法时,对泛型方法的类型参数实例化  public int useMethod()  {   return this.getvalueint(10);  }  //重载getvalue方法  public int getvalue(int i)  {   return i;  } } //下面演示覆盖 //要注意的是,泛型方法被覆盖时,约束被默认继承,不需要重新指定约束关系 abstract class Parent {  public abstract K TESTK, V(K k, V v) where K : V; } class Child : Parent {  public override T TESTT, S(T t, S s)  {   return t;  } }}

  最后我们来看一下泛型中的约束:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  C#中的泛型只支持显示的约束,因为这样才能保证C#所要求的类型安全,但显示的约束并非时必须的,如果不加约束,泛型类型参数将只能访问System.Object类型中的公有方法。显式约束由where子句表达,可以指定基类约束,接口约束,构造器约束,值类型/引用类型约束共四种约束。下面的例子

来源:http://www.tulaoshi.com/n/20160219/1609487.html

延伸阅读
热衷于C#语言的人会喜欢上Visual C# 2005。Visual Studio 2005为Visual C# 2005带来了大量令人兴奋的新功能,例如泛型、迭代器、局部类和匿名方法等。虽然泛型是人们最常谈到的也是预期的功能,尤其是在熟悉模板的C++开发人员中间,但是其他的新功能同样是对Microsoft .NET开发宝库的重要补充。与C#的第一个版本相比,这些功能和语言附加将会提...
C#中程序结构的关键概念为程序、命名空间、类型、成员和程序集。C#程序包括一个或多个源文件。程序中声明类型,类型包含成员并能够被组织到命名空间中。类和接口是类型的例子。字段、方法、属性和事件则是成员的例子。当C#程序被编译时,它们被物理地打包到程序集中。程序集的文件扩展名一般为.exe或者.dll,这取决于它们是实现为应用程序...
首先从原理上解释一下采用Socket接口的网络通讯,这里以最常用的C/S模式作为范例,首先,服务端有一个进程(或多个进程)在指定的端口等待客户来连接,服务程序等待客户的连接信息,一旦连接上之后,就可以按设计的数据交换方法和格式进行数据传输。客户端在需要的时刻发出向服务端的连接请求。这里为了便于理解,提到了一些调用及其大致的...
问题:在多线程中调用Winform 我的WinForm程序中有一个用于更新主窗口的工作线程(worker thread),但文档中却提示我不能在多线程中调用这个form(为什么?),而事实上我在调用时程序常常会崩掉。请问如何从多线程中调用form中的方法呢? 解答: 每一个从Control类中派生出来的WinForm类(包括Control类)都是依靠底层Wind...
Visual C#是微软.Net框架中的一个重要的程序开发语言,虽然在.Net框架中还有其他的程序开发语言,但微软似乎对Visual C#更喜爱有加。这同时也就决定了Visual C#在.Net框架中的地位,以及他以后的发展前途。由于针对剪切板方面的编程始终是程序设计的一个重点,当然也可以算是一个难点。本文将探讨如何利用Visual C#进行剪切板编程。本...

经验教程

308

收藏

55
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部