程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#泛型秘訣(3)(1)

C#泛型秘訣(3)(1)

編輯:關於C語言

4.5 使用相應的泛型版本替換Stack和Queue

問題

您希望通過將所有Stack和Queue對象替換為相應的泛型版本以提高應用程序的效率,並使得代碼更易於使用。當結構體或其他值類型存儲在這些數據結構中時,會導致裝箱/拆箱操作,這時就需要這麼做。

解決方案

使用System.Collections.Generic.Stack和System.Collections.Generic.Queue對象來替換現有的System.Collections.Stack和System.Collections.Queue對象。

這裡有一個簡單地使用System.Collections.Queue對象的簡單例子:

public static void UseNonGenericQueue()
  {
    // 創建一個非泛型隊列對象
    Queue numericQueue = new Queue();
    // 進隊(導致裝箱操作).
    numericQueue.Enqueue(1);
    numericQueue.Enqueue(2);
    numericQueue.Enqueue(3);
    //出隊並顯示項(導致拆箱操作)
    Console.WriteLine(numericQueue.Dequeue());
    Console.WriteLine(numericQueue.Dequeue());
    Console.WriteLine(numericQueue.Dequeue().ToString());
}

下面是相同的代碼使用了System.Collections.Generic.Queue對象

public static void UseGenericQueue()
  {
    // 創建一個泛型隊列對象.
    Queue<int> numericQueue = new Queue<int>();
    // 進隊.
    numericQueue.Enqueue(1);
    numericQueue.Enqueue(2);
    numericQueue.Enqueue(3);
    // 出隊並顯示項目.
    Console.WriteLine(numericQueue.Dequeue());
    Console.WriteLine(numericQueue.Dequeue());
    Console.WriteLine(numericQueue.Dequeue());
}

下面是一個簡單地使用System.Collections.Stack對象的例子

public static void UseNonGenericStack()
  {
    // 創建一個非泛型棧.
    Stack numericStack = new Stack();
    // 進棧(導致裝箱操作).
    numericStack.Push(1);
    numericStack.Push(2);
    numericStack.Push(3);
    // 出棧並顯示項目(導致拆箱操作).
    Console.WriteLine(numericStack.Pop().ToString());
    Console.WriteLine(numericStack.Pop().ToString());
    Console.WriteLine(numericStack.Pop().ToString());
}
下面是相同的代碼使用了System.Collections.Generic.Stack對象
public static void UseGenericStack()
  {
    // 創建一個泛型棧對象.
    Stack<int> numericStack = new Stack<int>();
    // 進棧.
    numericStack.Push(1);
    numericStack.Push(2);
    numericStack.Push(3);
    // 出棧並顯示項目.
    Console.WriteLine(numericStack.Pop().ToString());
    Console.WriteLine(numericStack.Pop().ToString());
    Console.WriteLine(numericStack.Pop().ToString());
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved