Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Beispiel zeigt, wie Sie die Syntax ... in C++/CLI verwenden können, um Funktionen zu implementieren, die eine variable Anzahl von Argumenten haben.
Hinweis
Dieses Thema betrifft C++/CLI. Informationen zur Verwendung der ... in ISO Standard C++ verwendeten Vorlagen finden Sie unter Ellipsen und variadischen Vorlagen sowie Ellipsis und Standardargumente in Postfix-Ausdrücken.
Der Parameter, der ... verwendet, muss der letzte Parameter in der Parameterliste sein.
Beispiel
Code
// mcppv2_paramarray.cpp
// compile with: /clr
using namespace System;
double average( ... array<Int32>^ arr ) {
int i = arr->GetLength(0);
double answer = 0.0;
for (int j = 0 ; j < i ; j++)
answer += arr[j];
return answer / i;
}
int main() {
Console::WriteLine("{0}", average( 1, 2, 3, 6 ));
}
3
Codebeispiel
Das folgende Beispiel zeigt, wie Sie in C# eine Visual C++-Funktion aufrufen, die eine variable Anzahl von Argumenten akzeptiert.
// mcppv2_paramarray2.cpp
// compile with: /clr:safe /LD
using namespace System;
public ref class C {
public:
void f( ... array<String^>^ a ) {}
};
Die Funktion f kann beispielsweise von C# oder Visual Basic aufgerufen werden, als wäre sie eine Funktion, die eine variable Anzahl von Argumenten akzeptieren kann.
In C# kann ein Argument, das an ein ParamArray-Parameter übergeben wird, durch eine variable Anzahl von Argumenten aufgerufen werden. Das folgende Codebeispiel ist in C#.
// mcppv2_paramarray3.cs
// compile with: /r:mcppv2_paramarray2.dll
// a C# program
public class X {
public static void Main() {
// Visual C# will generate a String array to match the
// ParamArray attribute
C myc = new C();
myc.f("hello", "there", "world");
}
}
Ein Aufruf von f in Visual C++ kann ein initialisiertes Array oder ein Array mit variabler Länge übergeben.
// mcpp_paramarray4.cpp
// compile with: /clr
using namespace System;
public ref class C {
public:
void f( ... array<String^>^ a ) {}
};
int main() {
C ^ myc = gcnew C();
myc->f("hello", "world", "!!!");
}