2010-05-11 84 views
7

鑑於this MSDN文章中,我們瞭解到,通用類型系統在.net中有引用類型這個分類:.Net中的自描述類型究竟意味着什麼?

「引用類型可以自描述類型指針類型,或接口類型。 參考類型的類型可以從自描述類型的值中確定。自描述類型進一步分爲數組class ty pes「。

  1. 所以一個數組,例如,是一個自描述類型,因爲我們可以從它的值中確定它的類型?
  2. 如何?
  3. 就是這樣,還是有更多這個定義?

回答

3

自描述類型是由可用於自身的元數據描述的類型。最常見的形式是類類型。在這裏很容易展示什麼是自描述的意思:

類型本身由類定義來描述。例如客戶類別名稱,年齡和customerid。這個類的一個實例純數據會是這樣的:

8%3|*1C U S T O M E R 

只是因爲環境具有包含你真的知道一些這方面的數據形成的ID,年齡和名字的元數據類的描述。爲了識別元數據,將對象內容數據與類ID合併,以便環境可以將類描述與元數據進行匹配。

|Class metadata reference: Metadata for the customer class 
| |Customer ID: Field 
| | |Customer Age: Field 
| | ||Customer Name : Field 
8%3|*1C U S T O M E R 

對於數組它是相似的:陣列類包含關於條目的數量關於存儲的條目的信息,以及類型信息(見上文)。

3

自描述類型是一種數據類型,它提供了有關自己的信息以利於垃圾收集器。基本上任何具有某種形式的元數據的類型,例如一個程序集將被視爲自描述類型。

3

也許最好的方式來顯示指針類型和接口類型是如何自我描述的是一個例子:

using System; 

interface ISample { } 
class CSample : ISample { } 

class Program { 
    static unsafe void Main(string[] args) { 
     ISample itf = new CSample(); 
     var it = itf.GetType(); 
     Console.WriteLine(it.FullName); 
     int value = 42; 
     int* p = &value; 
     var pt = p->GetType(); 
     Console.WriteLine(pt.FullName); 
     Console.ReadLine(); 
    } 
} 

輸出:

CSample 
System.Int32 

換句話說,對象申報作爲接口類型只能描述實現它們的類。指針只能描述它們指向的對象的類型。

相關問題