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

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

編輯:關於C語言

4.2 理解泛型類型

問題

您需要理解泛型類型在.NET中是如何工作的,它跟一般的.Net類型有什麼不同。

解決方案

幾個小實驗就可以演示一般類型和泛型類型之間的區別。例4-1中的StandardClass類就是一個般類型。

例4-1 StandardClass:一般的.Net類型

public class StandardClass
{ 
  static int _count = 0; //StandardClass類的對象的表態計數器
  int _maxItemCount; //項數目的最大值
  object[] _items; //保存項的數組
  int _currentItem = 0; //當前項數目
  public StandardClass(int items) //構造函數
  {
    _count++; //對象數目加
    _maxItemCount = items;
    _items = new object[_maxItemCount]; //數組初始化
  }
  //用於添加項,為了適用於任何類型,使用了object類型
  public int AddItem(object item)
  {
    if (_currentItem < _maxItemCount)
    {
      _items[_currentItem] = item;
      return _currentItem++; //返回添加的項的索引
    }
    else
      throw new Exception("Item queue is full ");
  }
  //用於從類中取得指定項
  public object GetItem(int index)
  {
    Debug.Assert(index < _maxItemCount); //設置斷言
    if (index >= _maxItemCount)
      throw new ArgumentOutOfRangeException("index");
    return _items[index]; //返回指定項
  }
  public int ItemCount //屬性,指示當前項數目
  {
    get { return _currentItem; }
  }
  public override string ToString( )
  {  //重載ToString方法,用於介紹類的情況
    return "There are " + _count.ToString( ) +
      " instances of " + this.GetType( ).ToString( ) +
      " which contains " + _currentItem + " items of type " +
      _items.GetType( ).ToString( ) + "";
  }
}

StandardClass類有一個整型靜態成員變量_count,用於在實例構造器中計數。重載的ToString()方法打印在這個應用程序域中StandardClass類實例的數目。StandardClass類還包括一個object數組(_item),它的長度由構造方法中的傳遞的參數來決定。它實現了添加和獲得項的方法(AddItem,GetItem),還有一個只讀屬性來獲取數組中的項的數目(ItemCount)。

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