Aracılığıyla paylaş


CLR Dizisi Bildirimi

Bildirmeye, oluşturmaya ve yönetilen bir dizeyi örneklemeye ilişkin sözdizimi, C++ için Yönetilen Uzantılardan Visual C++ 2010 öğesine değiştirildi.

Yönetilen Uzantılardaki bir CLR dizi nesnesinin bildirimi __gc anahtar kelimesinin aşağıdaki örnek çiftinde olduğu gibi dizi nesnesinin adıyla olası virgül dolu boyutu arasına yerleştirildiği bir standart dizi bildiriminin uzantısıdır:

void PrintValues( Object* myArr __gc[]);
void PrintValues( int myArr __gc[,,]);

Bu, STL vector bildirimi gibi şablona benzer bir bildirim kullandığımız yeni sözdiziminde basitleştirilmiştir. İlk parametre öğe türünü gösterir. İkinci parametre boyut dizisini belirtir (varsayılan 1 değeri ile, böylelikle yalnızca birden çok boyut ikinci bir bağımsız değişken gerektirir). Array nesnesinin kendisi bir izleme işleyicisidir ve bu yüzden bir başlık verilmelidir. Öğe türü aynı zamanda bir başvuru türüyse bir şapka da gerektirir. Örneğin, yukarıdaki örnek, yeni sözdizimi ile belirtildiğinde, aşağıdaki gibi görünür:

void PrintValues( array<Object^>^ myArr );
void PrintValues( array<int,3>^ myArr );

Bir başvuru türü bir nesne değil izleme tanıtıcısı olduğu için, bir işlevin dönüş türü olarak bir CLR dizisi belirtmek mümkündür. (Buna karşılık, yerel diziyi bir işlevin dönüş türü olarak belirlemek mümkün değildir.) Yönetilen Uzantılar öğesinde bunu yapan sözdizimi pek kolay anlaşılmaz. Örneğin:

Int32 f() [];
int GetArray() __gc[];

Visual C++ 2010 öğesinde, bildirim çok daha basittir. Örnek:

array<Int32>^ f();
array<int>^ GetArray();

Yerel yönetilen bir dizinin steno başlatması dilin her iki sürümünde de desteklenir. Örneğin:

int GetArray() __gc[] {
   int a1 __gc[] = { 1, 2, 3, 4, 5 };
   Object* myObjArray __gc[] = { 
      __box(26), __box(27), __box(28), __box(29), __box(30)
   };
   return a1;
}

yeni sözdiziminde oldukça basitleştirilmiştir (yeni sözdiziminde kutulama dolaylı olduğundan __box işleci ortadan kaldırılmıştır – bir tartışma için bkz. Değer Türleri ve Davranışları):

array<int>^ GetArray() {
   array<int>^ a1 = {1,2,3,4,5};
   array<Object^>^ myObjArray = {26,27,28,29,30};
   return a1;
}

Bir dizi CLR başvuru türü olduğu için, her bir dizi nesnesinin bildirimi bir izleme tanıtıcısıdır. Bu yüzden, dizi nesnelerinin CLR yığını üzerinde ayrılması gerekir. (Steno gösterimi yönetilen yığın ayırmayı gizler.) Yönetilen Uzantılar altında bir dizi nesnesi başlatmasının açık formu aşağıdadır:

Object* myArray[] = new Object*[2];
String* myMat[,] = new String*[4,4];

Yeni sözdizimi altında new ifadesi gcnew ile değiştirilmiştir. Boyut boyutları parametre olarak gcnew ifadesine şu şekilde geçirilir:

array<Object^>^ myArray = gcnew array<Object^>(2);
array<String^,2>^ myMat = gcnew array<String^,2>(4,4);

Yeni sözdiziminde bir açık başlatma listesi gcnew ifadesini takip edebilir; Bu, Yönetilen Uzantılar'da desteklenmiyordu. Örneğin:

// explicit initialization list following gcnew 
// was not supported in Managed Extensions
array<Object^>^ myArray = 
   gcnew array<Object^>(4){ 1, 1, 2, 3 };

Ayrıca bkz.

Başvuru

array (Visual C++)

Kavramlar

Yönetilen Türler (C++/CL)