Kolumne: C# im Fokus

Optionale Parameter in .NET 2.0 bis .NET 4.0
Kommentare

Der richtige Einsatz von optionalen Parametern kann den notwendigen Implementierungs-aufwand reduzieren. Durch die Verwendung von optionalen Parametern kann in vielen Fällen auf Methodenüberladungen verzichtet werden.

Die Programmiersprache C# unterstützte bis zur Version 3.5 dieses Konzept allerdings nicht. Erst mit der Version 4.0 wurde eine entsprechende Sprachsyntax eingeführt, um optionale Parameter zu definieren. Auch wenn eine syntaktische Unterstützung von optionalen Parametern erst mit .NET 4.0 gewährleistet ist, konnten schon in früheren Versionen ein ähnlicher Mechanismus nachgebaut werden. Dieser Teil der Kolumne beschreibt diese Möglichkeiten und stellt die neue Unterstützung optionaler Parameter in .NET 4.0 vor.

params: ein Anfang

Mit dem Schlüsselwort params kann ein sog. Parameter-Array definiert werden. Über ein solches Konstrukt können einer Methode mehrere Parameter des gleichen Typs übergeben werden. Dabei handelt es sich explizit um einen optionalen Parameter, da die Angabe keine Pflicht darstellt (Listing 1).

public static void UsingParam(string param1, params string[] optParam)
{
  Console.WriteLine("Wert Parameter 1: {0}", param1);
  foreach (string p in optParam)
    Console.WriteLine("Wert optionaler Parameter: {0}", p); 
}  

Die Methode UsingParam besitzt zwei Parameter, der letzte Parameter ist dabei mit dem Schlüsselwort params gekennzeichnet. Innerhalb des Hauptprogramms wird die Methode mit unterschiedlichen Parametern aufgerufen. Die Abbildung 1 zeigt die entsprechenden Ausgaben des Programms auf der Konsole. Wie erkennbar ist, können entweder kein oder mehrere Parameter über den als params gekennzeichneten Parameter übergeben werden. Das Schlüsselwort params besitzt jedoch einige Nachteile. Zum einen kann es nur einmalig am Ende der Parameterauflistung einer Methode verwendet werden und zum anderen müssen alle Parameter vom gleichen Typ sein. Ebenfalls nachteilig ist die unstrukturierte Ablage der Parameter. Da die einzelnen Parameter innerhalb des params-Parameters keinen Namen besitzen, kann nur über den Index auf die Werte zugegriffen werden. Daher eignet sich das params-Schlüsselwort nur bedingt als Ersatz für optionale Parameter.

Abb. 1: IntelliSense-Darstellung optionaler Parameter
Abb. 1: IntelliSense-Darstellung optionaler Parameter

Nullable Parameter

Seit der ersten .NET-Version können Referenztypen den Wert null (also nicht vorhanden) annehmen. Bis zur .NET-Version 2.0 war diese Eigenschaft den Referenztypen vorbehalten. Mit .NET 2.0 ist es auch möglich, dass primitive Typen den Wert null annehmen können. Durch diese sinnvolle Spracherweiterung können optionale Parameter nachgestellt werden (Listing 2).

public static void UsingNullable(int param1, int? param2)
{
  Console.WriteLine("Parameter 1: {0}, Parameter 2: {1}", param1, param2);
}  

Wie in Listing 2 zu erkennen ist, müssen die als Nullable (syntaktisch wird dazu das ? verwendet) gekennzeichneten Parameter keinen konkreten Wert aufweisen. Allerdings müssen die Parameter weiterhin bei dem Aufruf der Methode angegeben werden, ein Auslassen der Parameter ist nicht möglich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -