webentwicklung-frage-antwort-db.com.de

Übergeben Sie mehrere optionale Parameter an eine C # -Funktion

Gibt es eine Möglichkeit, eine C # -Funktion einzurichten, um eine beliebige Anzahl von Parametern zu akzeptieren? Könnten Sie zum Beispiel eine Funktion so einrichten, dass alle folgenden Funktionen funktionieren: 

x = AddUp(2, 3)

x = AddUp(5, 7, 8, 2)

x = AddUp(43, 545, 23, 656, 23, 64, 234, 44)
54
Craig Schwarze

Verwenden Sie ein Parameterarray mit dem Modifizierer params:

public static int AddUp(params int[] values)
{
    int sum = 0;
    foreach (int value in values)
    {
        sum += value;
    }
    return sum;
}

Wenn Sie sicherstellen möchten, dass es mindestens einen one-Wert (anstelle eines möglicherweise leeren Arrays) gibt, geben Sie diesen separat an:

public static int AddUp(int firstValue, params int[] values)

(Setzen Sie sum auf firstValue, um mit der Implementierung zu beginnen.)

Beachten Sie, dass Sie auch die Array-Referenz auf normale Weise auf Nullwert prüfen sollten. Innerhalb der Methode ist der Parameter ein ganz normales Array. Der Parameter-Array-Modifikator macht nur einen Unterschied, wenn Sie Aufruf die Methode verwenden. Grundsätzlich dreht der Compiler:

int x = AddUp(4, 5, 6);

in etwas wie:

int[] tmp = new int[] { 4, 5, 6 };
int x = AddUp(tmp);

Sie can rufen sie jedoch mit einem völlig normalen Array auf - daher ist die letztere Syntax auch im Quellcode gültig.

131
Jon Skeet

C # 4.0 unterstützt auch optionale Parameter, die in einigen anderen Situationen nützlich sein können. Siehe diesen Artikel. 

5
Tarydon

1. Sie können Überlastungsfunktionen erstellen. 

SomeF(strin s){}   
SomeF(string s, string s2){}    
SomeF(string s1, string s2, string s3){}   

Weitere Informationen: http://csharpindepth.com/Articles/General/Overloading.aspx

2.oder Sie können eine Funktion mit Parametern erstellen

SomeF( params string[] paramArray){}
SomeF("aa","bb", "cc", "dd", "ff"); // pass as many as you like

Weitere Informationen: https://docs.Microsoft.com/en-us/dotnet/csharp/language-reference/keywords/params

3.oder Sie können ein einfaches Array verwenden

Main(string[] args){}
0
Pit J