計算中,一個不完全類型是一種特殊的數據類型,它的定義會跨越多個源文件。在面向對象編程中會由於一些不同的原因用到:性能和成本常常會阻止使用幾個分離的類;代碼生成工具的使用越來越多,而將機器生成的代碼和程序員寫的代碼分離開來,則會十分方便。

C#中的不完全類型

不完全類型是C# 2.0的一個特性。用於建立一個不完全類定義的語法如下:

SourceFile1.cs

public partial class ExampleClass
{
   public void SomeFunction()
   {
       // ...
   }
}

SourceFile2.cs

public partial class ExampleClass
{
   public void SomeOtherFunction()
   {
       // ...
   }
}

在 C# 2.0之前的版本,這會造成一個編譯錯誤,因為同樣的類重複定義了兩次(同樣也因為partial關鍵字)。在C#2.0中,它會被看作為一個單一的類定義。其它C#2.0的新特性包括匿名方法迭代子泛型(類似於C++中的模板)。

使用不完全類對生成的代碼沒有任何影響((unless editor meta-data is emitted).

C/C++中的不完全類型

C/C++中不完全類型有三種不同形式: void、未指定長度的數組以及具有非指定內容的結構和聯合。使用不完全類型的指針或引用,不需要知道類型的全部內容。另外也用於解決對象類型及其成員之間的類型循環依賴。

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.