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.