Skip to main content

Methoden & Funktionen

Named Parameters

Namentliche Parameter Zuweisung beim Function-Call. Die Reihenfolge der Parameter spielt in dem Fall keine Rolle mehr.

static void Main()
{
string nameInput = "MyName";
int ageInput = "MyAge";
string addressInput = "MyAddress";

PrintDetails(age: ageInput, name: nameInput, address: addressInput)
}
static void PrintDetails(string name, int age, string address)
{
Console.WriteLine($"Name: {name}; Age: {age}; Address: {address}")
}

Out Parameters

static void Main()
{
var shoppingList = new List<string> {"Coffee", "Milk"};
Console.Write("Enter an item to search: ");
string search = Console.ReadLine();

Console.WriteLine((FindInList(search, shoppingList, out int index)) ?
$"Found {search} at index {index}" :
$"{search} not Found");
}

static bool FindInList(string s, List<string> list, out int index)
{
index = -1;
for (int i = 0; i < list.Count; i++)
{
if (list[i].ToLower().Equals(s.ToLower()))
index = i;
}
return index > -1;
}

Ref Parameters

Assigns a Parameter by its Reference (reference to the location in memory)

string name = "John";
Console.Write("Enter your new name: ");
string newName = Console.ReadLine();

if (ChangeName(ref name, newName))
Console.WriteLine($"Your new name is {name}!");
else
Console.WriteLine($"New name cannot be empty or null!");

static bool ChangeName(ref string name, string newName)
{
if (!string.IsNullOrEmpty(newName))
{
name = newName;
return true;
}
return false;
}

Generische Parametern

Generics are not specific to a particular data type. Add <T> to: classes, methods, fields, etc. Allows for code reusability for different data types.

int[] intArray = { 1, 2, 3 };
double[] doubleArray = { 1.0, 2.0, 3.0 };
string[] stringArray = { "1", "2", "3" };

DisplayElements(inArray);
DisplayElements(doubleArray);
DisplayElements(stringArray);

public static void DisplayElements<T>(T[] array)
{
foreach (T item in array)
{
Console.WriteLine(item + " ");
}
}

Generischer Rückgabewert

Bei generischen Methoden definierst du einen Typparameter in der Methodensignatur. So kann der Aufrufer den Typ bestimmen, der zurückgegeben werden soll.

public T GetValue<T>(object input) 
{
(T)Convert.ChangeType(input, typeof(T));
}

// Aufruf
int result = GetValue<int>("123"); // result hat den Typ int
string text = GetValue<string>(456); // text hat den Typ string

Dynamischer Rückgabewert

Mit dem Schlüsselwort dynamic wird der Rückgabetyp zur Laufzeit bestimmt, und der Compiler führt keine statische Typprüfung durch. Flexibel, Weniger Typsicherheit.

public dynamic GetDynamicValue(object input)
{
// Hier wird input einfach als dynamic zurückgegeben.
return input;
}

// Aufruf; Der Typ von value wird zur Laufzeit bestimmt.
dynamic value = GetDynamicValue("Hallo Welt");