C# ist eine statisch typisierte Sprache. Das bedeutet, dass alles zur Kompilierzeit einen Typ hat. Wenn du einem Namen einen Wert zuweist, wird das als Definieren einer Variable bezeichnet. Eine Variable kannst du auf zwei Arten definieren: entweder indem du ihren Typ explizit angibst oder indem du den C#-Compiler den Typ anhand des zugewiesenen Werts ableiten lässt (bekannt als Typinferenz). Die folgenden beiden Variablendefinitionen sind daher äquivalent:
int explicitVar = 10; // Explicitly typed
var implicitVar = 10; // Implicitly typed
Den Wert einer Variable änderst du mit dem Operator =. Sobald eine Variable definiert ist, kann sich ihr Typ nie mehr ändern.
var count = 1; // Assign initial value
count = 2; // Update to new value
// Compiler error when assigning different type
// count = false;
C# ist eine objektorientierte Sprache und verlangt, dass alle Funktionen in einer Klasse definiert werden. Mit dem Schlüsselwort class definierst du eine Klasse. Objekte (oder Instanzen) erstellst du mit dem Schlüsselwort new.
class Calculator
{
// ...
}
var calculator = new Calculator();
Eine Funktion innerhalb einer Klasse wird als Methode bezeichnet. Jede Methode kann null oder mehr Parameter haben. Alle Parameter müssen explizit typisiert sein, für Parameter gibt es keine Typinferenz. Genauso muss auch der Rückgabetyp explizit angegeben werden. Werte gibst du mit dem Schlüsselwort return aus Methoden zurück. Damit eine Methode von Code in anderen Dateien aufgerufen werden kann, musst du den Zugriffsmodifizierer public hinzufügen.
class Calculator
{
public int Add(int x, int y)
{
return x + y;
}
}
Methoden rufst du mit der Punkt-Syntax (.) auf einer Instanz auf: Du gibst den Namen der aufzurufenden Methode an und übergibst Argumente für jeden Parameter der Methode. Argumente können optional den Namen des zugehörigen Parameters angeben.
var calculator = new Calculator();
var sum_v1 = calculator.Add(1, 2);
var sum_v2 = calculator.Add(x: 1, y: 2);
Der Gültigkeitsbereich wird in C# zwischen den Zeichen { und } festgelegt.
C# unterstützt zwei Arten von Kommentaren. Einzeilige Kommentare werden mit // eingeleitet, mehrzeilige Kommentare stehen zwischen /* und */.
Lucians Freundin ist auf dem Weg nach Hause und er hat das Abendessen zu ihrem Jahrestag noch nicht gekocht!
In dieser Übung schreibst du etwas Code, um Lucian dabei zu helfen, eine köstliche Lasagne aus seinem Lieblingskochbuch zu kochen.
Es gibt vier Aufgaben und alle drehen sich um die Zeit, die für das Kochen der Lasagne benötigt wird.
Definiere die Methode Lasagna.ExpectedMinutesInOven(), die keine Parameter entgegennimmt und zurückgibt, wie viele Minuten die Lasagne im Ofen sein sollte. Laut dem Kochbuch beträgt die erwartete Backofenzeit 40 Minuten:
var lasagna = new Lasagna();
lasagna.ExpectedMinutesInOven();
// => 40
Definiere die Methode Lasagna.RemainingMinutesInOven(), die die tatsächlichen Minuten, die die Lasagne bereits im Ofen war, als Parameter entgegennimmt und zurückgibt, wie viele Minuten die Lasagne noch im Ofen bleiben muss. Dabei gehst du von der erwarteten Backofenzeit aus der vorherigen Aufgabe aus.
var lasagna = new Lasagna();
lasagna.RemainingMinutesInOven(30);
// => 10
Definiere die Methode Lasagna.PreparationTimeInMinutes(), die die Anzahl der Schichten, die du der Lasagne hinzugefügt hast, als Parameter entgegennimmt und zurückgibt, wie viele Minuten du mit der Vorbereitung der Lasagne verbracht hast. Dabei gehst du davon aus, dass jede Schicht 2 Minuten zum Vorbereiten braucht.
var lasagna = new Lasagna();
lasagna.PreparationTimeInMinutes(2);
// => 4
Definiere die Methode Lasagna.ElapsedTimeInMinutes(), die zwei Parameter entgegennimmt: Der erste Parameter ist die Anzahl der Schichten, die du der Lasagne hinzugefügt hast, und der zweite Parameter ist die Anzahl der Minuten, die die Lasagne bereits im Ofen war. Die Funktion sollte zurückgeben, wie viele Minuten du mit dem Kochen der Lasagne verbracht hast, also die Summe aus der Vorbereitungszeit in Minuten und der Zeit in Minuten, die die Lasagne gerade im Ofen verbracht hat.
var lasagna = new Lasagna();
lasagna.ElapsedTimeInMinutes(3, 20);
// => 26
Melde dich bei Exercism an, um C# mit 62 Konzepte178 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.