共用方式為


陣列共變數

使用直接或間接基底類別 B 的特定參考類別 D,陣列型別 D 可指派給型別 B. 的陣列變數。

// clr_array_covariance.cpp
// compile with: /clr
using namespace System;

int main() {
   // String derives from Object
   array<Object^>^ oa = gcnew array<String^>(20);
}

備註

對陣列元素的一項工作將會與陣列的動態型別指派相容。 陣列元素的一項工作與不相容的型別就會造成 System::ArrayTypeMismatchException 擲回。

陣列的方差不適用於一些實值類別型別。 例如, Int32 陣列不能轉換成 Object^ 陣列,即使是透過 Boxing。

範例

// clr_array_covariance2.cpp
// compile with: /clr
using namespace System;

ref struct Base { int i; };
ref struct Derived  : Base {};
ref struct Derived2 : Base {};
ref struct Derived3 : Derived {};
ref struct Other { short s; };

int main() {
   // Derived* d[] = new Derived*[100];
   array<Derived^> ^ d = gcnew array<Derived^>(100);

   // ok by array covariance
   array<Base ^> ^  b = d;

   // invalid
   // b[0] = new Other;

   // error (runtime exception)
   // b[1] = gcnew Derived2;

   // error (runtime exception),
   // must be "at least" a Derived.
   // b[0] = gcnew Base;

   b[1] = gcnew Derived;
   b[0] = gcnew Derived3;
}

請參閱

參考

陣列 (C++ 元件擴充功能)