Kann ich Standardparameter in C # angeben?
In C:
void fun(int i = 1)
{
printf("%d", i);
}
Können wir Parametern einen Standardwert geben? Ist es in C # möglich? Wenn ja, können wir Überlastungsfunktionen vermeiden?
Es ist immer eine schlechte Praxis, einer vorhandenen Funktion einen optionalen Parameter hinzuzufügen. Wenn Sie an einem Projekt arbeiten, das auf die Klasse mit einer Funktion verweisen muss, und wir einen Parameter mit einem optionalen Wert geändert haben, wird möglicherweise eine Laufzeitausnahme ausgelöst, dass die Methode nicht gefunden wird.
Dies liegt daran, dass wir berücksichtigen werden, dass beim Hinzufügen eines zusätzlichen optionalen Werts keine Codeänderung erforderlich ist, wenn die Funktion an vielen Stellen verwendet wird.
function Add(int a, int b);
Dies wird folgendermaßen aufgerufen:
Add(10, 10);
Wenn wir jedoch einen optionalen Parameter wie diesen hinzufügen,
function Add(int a, int b, int c = 0);
dann erwartet der Compiler
Add(10, 10, 0);
Eigentlich rufen wir so auf Add(10, 10)
und diese Funktion ist in dieser Klasse nicht verfügbar und verursacht eine Laufzeitausnahme.
Dies geschieht, während einer Funktion, die von vielen Stellen aufgerufen wird, ein neuer Parameter hinzugefügt wird, und ich bin mir nicht sicher, ob dies jedes Mal passieren wird. Ich empfehle Ihnen jedoch, die Funktion zu überlasten.
Wir müssen immer die Methode überladen, die einen optionalen Parameter hat. Auch wenn Sie mit Funktionen arbeiten, die mehr als einen optionalen Parameter haben, ist es gut, den Wert mit dem Namen des Parameters zu übergeben.
function Add(int a, int b, int c = 0);
Es ist immer gut, diese Funktion folgendermaßen aufzurufen.
Add(10, 20, c:30);
Antworten:
Genau so machen Sie es in C #, aber die Funktion wurde zuerst in .NET 4.0 hinzugefügt
quelle
Visual Studio 2010+
hatmsbuild
mitmultitargeting
Funktion ( msdn.microsoft.com/en-us/library/vstudio/… ). Es kann.NET 4.0
Zielpakete verwenden, um Ihre optionalen Parameter in eine Reihe überladener Methoden zu integrieren.Ja. Siehe Benannte und optionale Argumente . Beachten Sie, dass der Standardwert eine Konstante sein muss. Dies ist also in Ordnung:
public string Foo(string myParam = "default value") // constant, OK { }
aber das ist nicht:
public void Bar(string myParam = Foo()) // not a constant, not OK { }
quelle
Dies ist nur ab C # 4.0 möglich
Wenn Sie jedoch eine Version von C # vor 4.0 verwenden, können Sie dies mithilfe überladener Methoden umgehen:
public void Func( int i, int j ) { Console.WriteLine (String.Format ("i = {0}, j = {1}", i, j)); } public void Func( int i ) { Func (i, 4); } public void Func () { Func (5); }
(Oder Sie können natürlich auf C # 4.0 upgraden).
quelle
Ja, aber Sie müssen .NET 3.5 und C # 4.0 verwenden, um diese Funktionalität zu erhalten.
Diese MSDN-Seite enthält weitere Informationen.
quelle
Diese Funktionalität ist ab C # 4.0 verfügbar - sie wurde in Visual Studio 2010 eingeführt. Sie können sie in Project for .NET 3.5 verwenden. Daher müssen alte Projekte in .NET 3.5 nicht auf .NET 4.0 aktualisiert werden.
Sie müssen nur Visual Studio 2010 verwenden, aber denken Sie daran, dass es auf die Standard-Sprachversion kompiliert werden sollte (legen Sie es unter Projekteigenschaften-> Buid-> Erweitert ... fest).
Diese MSDN-Seite enthält weitere Informationen zu optionalen Parametern in VS 2010.
quelle
Dies ist eine Funktion von C # 4.0, war jedoch ohne die Verwendung von Funktionsüberladung vor dieser Version nicht möglich.
quelle