Zum Hauptinhalt springen

Sonstiges

Bedingter NULL-Operator

Mit dem bedingten NULL-Operator kann, der Code auf prüfung von NULL verkürzt werden. Siehe folgendes Beispiel.

// Mit if-Abfrage
string name2 = null;
int length2 = 0;
if (name2 != null)
{
length2 = name2.Length;
}
else
{
length2 = 0;
}

// Mit bedingtem Null-Operator
string name = null;
int length = name?.Length ?? 0;

Erweiterungsmethoden

Erweiterungsmethoden können eingesetzt werden, um Klassen zu erweitern von denen nicht abgeleitet werden kann. Die also mit sealed gekennzeichnet sind. Erweiterungsmethoden müssen static sein und der erste Parameter wird this und der Klasse markiert, welche überschrieben werden soll

Beispiel:

public static class StringExtension
{
public static string Left(this string input, int length)
{
if (length > input.Length)
{
throw new InvalidProgramException("The length can't be longer as the length of the input");
}
return input.Substring(0, length);
}

public static string Right(this string input, int length)
{
if (length > input.Length)
{
throw new InvalidProgramException("The length can't be longer as the length of the input");
}
return input.Substring(input.Length - length, length);
}

// siehe Prioritätsregel
public static string ToUtring(string input)
{
return input.ToLower();
}
}
internal static class TestStringExtension
{
public static void Run()
{
string myString = "Hello world!";
string output = myString.Left(5);
Console.WriteLine(output);

output = myString.Right(6);
Console.WriteLine(output);

// siehe Prioritätsregel
output = myString.ToUpper();
Console.WriteLine(output);
}
}

Prioritätsregel

Hat die Erweiterungsmethode den selben Namen wie in der zu erweiternden Klasse hat die ursprüngliche Methode Vorrang und wird ausgeführt.


Kommentare