• C#語法學習泛型(gereric)



    /*
     * 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();
        }
    }

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    .NET Core自定义TagHelper和使用Serilog
    .NET Core CSRF
    jq 获取表单全部数据
    Webuploader 简单图片上传 支持多图上传
    CF-1451 E Bitwise Queries 异或 交互题
    CF-1440C2 Binary Table (Hard Version) (构造,模拟)
    CF-1445 C
    ACM模板_axiomofchoice_extra
    Codeforces Round #678 (Div. 2) 题解 (A-E)
    Oracle数据同步
  • 原文地址:https://www.cnblogs.com/Athrun/p/1283748.html
Copyright © 2020-2023  润新知