C#泛型学习实例(简单易懂)

 

默认分类 2009-09-23 21:04:59 阅读62 评论0  字号: 订阅

/*

 * Created by SharpDevelop.

 * User: Administrator

 * Date: 2008/9/4

 * Time: 上午 10:40

 * 泛型(gereric)

 */

 using System;

 class Stack

 {

     private int[] items;

     private int count;

     public Stack(int size)

     {

         items=new int[size];

         count=0;

     }

     public void Push(int x)

     {

         items[count++]=x;//這時是先賦值再進行自加運算

     }

     public int Pop()

     {

         return items[--count];//先自減再返回值

     }

 }

class Test

{

    static void Main()

    {

        Stack s=new Stack(10);

        s.Push(111);//先壓入111

        s.Push(222);//再壓入222

        Console.WriteLine(s.Pop().ToString());

        Console.WriteLine(s.Pop().ToString());

        /*

         * 輸出結果為

         * 222

         * 111

         * 這個程序演示了棧(Stack)的先進後出的原理

         */

    }

}

/*

 * Created by SharpDevelop.

 * User: Administrator

 * Date: 2008/9/4

 * Time: 上午 10:40

 * 泛型(gereric)

 * 現在需要改變我們希望可以傳入float類型的數據

 * 因此我們使用了弱類型的object,這時候我們傳入

 * 的參數就可以是整行和其它類型的數據.

 * 

 * 因為需要經過四次裝箱和拆箱操作,性能也就不是很好.

 * 當然是說大量的數據情況下

 */

 using System;

 class Stack

 {

     private object[] items;

     private int count;

     public Stack(int size)

     {

         items=new object[size];

         count=0;

     }

     public void Push(object x)

     {

         items[count++]=x;//這時是先賦值再進行自加運算

     }

     public object Pop()

     {

         return items[--count];//先自減再返回值

     }

 }

class Test

{

    static void Main()

    {

        Stack s=new Stack(10);

        s.Push(111.1);//裝箱

        s.Push(222.2);//裝箱

        Console.WriteLine((double)s.Pop()+(double)s.Pop());//兩次折箱

    }

}

/*

 * Created by SharpDevelop.

 * User: Administrator

 * Date: 2008/9/4

 * Time: 上午 11:01

 * 泛型(gereric)

 * 解決了性能上的問題,同時寫程序也會覺的更方便

 * 它引進行了一個類型參數

 */

using System;

 class Stack<T>//聲明泛型

 {

     private T[] items;

     private int count;

     public Stack(int size)

     {

         items=new T[size];

         count=0;

     }

     public void Push(T x)

     {

         items[count++]=x;//這時是先賦值再進行自加運算

     }

     public T Pop()

     {

         return items[--count];//先自減再返回值

     }

 }

class Test

{

    static void Main()

    {

        Stack<int> s=new Stack<int>(10);

        s.Push(111);

        s.Push(222);

        Console.WriteLine(s.Pop()+s.Pop());

    }

}

/*上面使用了泛型,這樣提高了程序的性能,不再需要進行裝箱和拆箱的動作

 * 

 * 如果我們現在需要使用小數只需要把泛型的類型參數改為double就可以了.

 * 

 * 

 * */

/*

 * Created by SharpDevelop.

 * User: Administrator

 * Date: 2008/9/5

 * Time: 上午 11:32

 * 兩個泛型參數的例子,通常用<T,S>

 */

using System;

public class Stu<T,S>

{

    private T name;

    private S age;

    public Stu(T Name,S Age)

    {

        this.name=Name;

        this.age=Age;

    }

    public void Show()

    {

        Console.WriteLine("姓名是:{0},年齡:{1}",name,age);

    }

}

class Test

{

    static void Main()

    {

        Stu<string,int> t=new Stu<string,int>("Athrun",26);

        t.Show();

    }

}

转载于:https://www.cnblogs.com/aqi0530/archive/2010/12/10/1902043.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值