c#泛型是什麼

泛型的本質是類型參數化或參數化類型,在不建立新的類型的狀況下,經過泛型指定的不一樣類型來控制形參具體限制的類型。數組

泛型是 2.0 版 C# 語言和 公共語言運行庫 (CLR) 中的一個新 功能。泛型將類型參數的概念引入 .NET Framework,類型參數使得設計以下類和方法成爲可能:這些類和方法將一個或多個類型的指定推遲到客戶端代碼聲明並實例化該類或方法的時候。例如,經過使用泛型類型參數 T,您能夠編寫其餘客戶端代碼可以使用的單個類,而不致引入運行時強制轉換或裝箱操做的成本或風險。安全

 

1.基礎類庫中的泛型性能

泛型類或接口學習

描述spa

對應的非泛型類型設計

Collection<T>htm

ICollection<T>對象

爲泛型容器提供基類排序

CollectionBase接口

ICollection

Comparer<T>

IComparer<T>

IComparable<T>

比較兩個相同泛型類型的對象是否相等、可排序。

Comparer

IComparer

IComparable

Dictionary<K, V>

IDictionary<K,V>

表示用鍵組織的鍵/值對集合。

Hashtable

IDictionary

Dictionary<K, V>.KeyCollection

表示Dictionary<K, V>中鍵的集合。

None.

Dictionary<K, V>.ValueCollection

表示Dictionary<K, V>中值的集合。

None.

IEnumerable<T>

IEnumerator<T>

表示可使用foreach 迭代的集合。

IEnumerable

IEnumerator

KeyedCollection<T, U>

表示有鍵值的集合。

KeyedCollection

LinkedList<T>

表示雙向鏈表。

None.

LinkedListNode<T>

表示LinkedList<T>中的節點。

None.

List<T>

IList<T>

使用大小可按需動態增長的數組實現 IList 接口

ArrayList

IList

Queue<T>

表示對象的先進先出集合。

Queue

ReadOnlyCollection<T>

爲泛型只讀容器提供基類。

ReadOnlyCollectionBase

SortedDictionary<K, V>

 表示鍵/值對的集合,這些鍵和值按鍵排序並可按照鍵訪問,實現IComparer<T>接口。

SortedList

Stack<T>

表示對象的簡單的後進先出集合。

Stack

2.示例

// Declare the generic class

public class GenericList<T>

{

void Add(T input) { }

}

class TestGenericList

{

private class ExampleClass { }

static void Main()

{

// Declare a list of type int

GenericList<int> list1 = new GenericList<int>();

// Declare a list of type string

GenericList<string> list2 = new GenericList<string>();

// Declare a list of type ExampleClass

GenericList<ExampleClass> list3 = new GenericList<ExampleClass>();

}

}

 

3.用途

使用泛型類型能夠最大限度地重用代碼、保護類型的安全以及提升性能。

泛型最多見的用途是建立集合類。

.NET Framework 類庫在 System.Collections.Generic 命名空間中包含幾個新的泛型集合類。應儘量地使用這些類來代替普通的類,如 System.Collections 命名空間中的 ArrayList

您能夠建立本身的泛型接口、 泛型類、泛型方法、泛型事件和泛型委託。

能夠對 泛型類進行約束以訪問特定數據類型的方法。

關於泛型 數據類型中使用的類型的信息可在運行時經過反射獲取。

 

4.練習

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
}

//泛型類
static T GetT<T>() where T:new()
{
return new T();
}

//泛型方法
static void create<K>(K stu) where K: MiddleStu
{
stu.Say();
}
}

//泛型接口
interface Stu
{
void Say();
}
//實現接口
class MiddleStu : Stu
{
public void Say()
{
throw new NotImplementedException();
}
}

}

 

做者還在學習中,發現錯誤的請在評論區留言。  若是有客友以爲文章還行的話,請點波推薦哦👍。 謝謝大家!!

相關文章
相關標籤/搜索