Inhaltsverzeichnis[Verbergen]
|
Dieses kostenlose C# Tutorial richtet sich an Anfänger, die das Programmieren in C# erlernen möchten. Im folgenden C# Crashkurs erhältst du einen Vorgeschmack, was dich im umfangreichen C# Tutorial alles so erwartet, in dem ich dir ausführlich die C# Grundlagen vermittle und dir anhand zahlreicher Lernvideos das Programmieren mit C# beibringe.
Hier nun ein kleiner Auszug aus dem C# Kurs:
C#
C# (gesprochen: si-scharp) ist eine Programmiersprache, die von Microsoft entwickelt und im Jahr 2001 veröffentlicht wurde. C# wurde eigens für das .NET Framework konzipiert. .NET wiederum wurde ebenfalls von Microsoft entwickelt und ist sowohl eine Laufzeit- als auch eine Entwicklungsumgebung.
C# ist sehr vielseitig einsetzbar. So können für das Betriebssystem Windows Desktop-Anwendungen entwickelt werden aber auch Webapplikationen. Für Webanwendungen stellt Microsoft ASP.NET bzw. ASP.NET Core zur Verfügung.
Portierbarkeit: mittels sogenannter Container können .NET Anwendungen auch auf anderen Betriebsystemen wie beispielweise Mac OS oder Linux ausgeführt werden.
Wieso gerade C# lernen und nicht eine andere Programmiersprache?
In Anbetracht der Tatsache, dass Windows in Client- als auch im Serverbereich weit verbreitet ist, lohnt es sich allemal C# zu lernen. Es gibt natürlich eine Vielzahl anderer Programmiersprachen, die auch ihren Zweck erfüllen. In diesem Tutorial konzentrieren wir uns jedoch auf C#.
IDE - Entwicklungsumgebung
Bevor wir so richtig losstarten mit dem C# Tutorial benötigen wir ein Programm, dass für uns den C# Code in eine Maschinensprache übersetzt (kompiliert). Dafür eignet sich Microsoft Visual Studio 2019 besonders. Es gibt mehrere Editions wobei die Community Edition für Studierende, Mitwirkende an Open-Source-Projekten und Einzelentwickler kostenlos ist.
Hier der Download link für Visual Studio 2019
Hello World
Nach der Installation können wir auch schon loslegen. Sehen wir uns dazu ein einfaches und bekanntes Programm namens "Hello World" an:
using System;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Console.ReadKey();
}
}
}
Erklärung des Programms:
- In Zeile 1 wird der System Namespace in das Programm eingebunden.
- In Zeile 3 wird der eigene Namespace definiert.
- Zeile 5 deklariert die Klasse Program
- Zeile 7 ist eine Methode. In unserem Programm der Einstiegspunkt
- Zeile 9 ist ein Methodenaufruf der den Schriftzug "Hello World!" ausgibt.
- Zeile 10 erwartet die Eingabe des Users. Mit diesem Befehl stellen wir sicher, dass das Programm nicht sofort beendet wird.
- Die geschwungenen Klammern in den Zeilen 4, 6, 8 öffnen den jeweiligen Body und 11, 12, 13 schließen den Body.
Um dieses Programm auszuführen öffne das Visual Studio und klicke auf File -> New -> Project. Wähle dann Installed -> Visual C# -> Windows Desktop -> und rechts wählst du Console App (.NET Framwork) aus. Danach kopierst du den obenstehenden Code in die Datei Program.cs und drückst anschließend die Taste F5. Sofern alles geklappt hat, sollte sich ein Konsolenfenster öffnen mit der Ausgabe Hello World!
Geklappt? Ja? Herzlichen Glückwunsch, du hast soeben dein erstes vollständiges C# Programm kompiliert und ausgeführt.
Methoden
In Zeile 9 führen wir im obigen Programm unseren ersten Befehl aus und zwar teilen wir dem Computer mit dem Befehl oder dem Funktionsaufruf Console.WriteLine("Hello World!"); mit dass dieser "Hello World!" in die Konsole ausgeben soll. Die Methode WriteLine befindet sich in der der Klasse Console. Zu den Konzept der Klassen kommen wir noch später zu sprechen, doch jetzt ist einmal wichtig zu verstehen, dass in der Zeile 9 die Funktion WriteLine mit dem string parameter "Hello World!" aufgerufen wird.
Eine Methode oder auch Funktion genannt, ist ein Konstrukt bestehend aus dem Modifier, dem Returntyp, dem Methodennamen, der Signatur und dem Body. Den Teil zwischen den Klammern {} bezeichnet man als Body. Der Body beinhaltet die gewünschten Anweisungen. Sobald im Programm diese Methode aufgerufen wird, werden die darin enthaltenen Befehle ausgeführt.
Das folgende Beispiel zeigt, wie eine Methode implementiert wird:
private void WriteToConsole()
{
Console.WriteLine("Hello from Method WriteToConsole");
}
Zerlegen wir die oben gezeigte Methode in ihre Einzelteile:
-
private ist der Modifier, kann auch protected, public oder internal sein.
-
void ist der Returntype, eine Methode kann die unterschiedlichsten Returntypes haben
-
WriteToConsole ist der Methodenname
-
() ist die Signatur, in diesem Fall ist die Signatur leer, enthält also keine Parameter
-
{ leitet den Body ein
-
Dann kommt eine oder mehrere Anweisungen
- } schließt den Body bzw. die Methode
Methoden können auch Parameter in der Methodensignatur enthalten. Im folgenden Beispiel wird die Methode mit dem Signaturparameter - string name - erweitert, wobei der Parameter name an die Methode WriteLine weitergereicht wird.
private void WriteToConsole(string name)
{
Console.WriteLine($"Hello {name}, how are you?");
}
Der Compiler - unser Freund und Helfer
Jedes Programm, das später ausgeführt werden soll, muss zuerst kompiliert werden. In unserem vorigen Beispiel haben wir den Compiler mittels F5 angestoßen. F5 kompiliert das Programm und führt es im Anschluss aus, sofern es sich um ein ausführbares Programm handelt.
Das Kompilieren erledigt für uns der Compiler. Sehen wir den Compiler als unseren Freund an, auch wenn er "streng" sein kein, denn Kompilierungsfehler lässt er überhaupt nicht durchgehen. Aber das ist auch gut so, denn nur so können wir ausführbare Programme entwickeln, die auch später einwandfrei funktionieren. Logische Fehler beanstandet der Compiler hingegen nicht. Dafür ist jeder Programmierer schon selbst verantwortlich.
Lassen wir zB das Semikolon in der Zeile 9 weg und schreiben nur Console.WriteLine("Hello World!") dann bekommen wir beim Kompilieren die Fehlermeldung "; expected" in line 9 zurück. Netterweise teilt uns der Compiler auch die Zeilennummer mit und in welcher Datei sich der Fehler befindet. Bei größeren Projekten, sind diese Informationen enorm wichtig, sodass man das Problem schnell lokalisieren und beheben kann.
Kommentare
Kommentare sind sehr hilfreich, vor allem wenn man in Teams arbeitet aber auch für einen selbst, wenn man erklärungsbedürftigen Code schreibt. Wenn man einen Code ändern muss, der vor Jahren implementiert wurde, hilft ein guter Kommentar, den Code schnell wieder zu verstehen.
// dies ist ein Kommentar
/*
das
ist
ein
mehrzeiliger Kommentar
*/
Variablen
Variablen dienen dazu etwas abzuspeichern. Das können Zahlen sein, strings, Uhrzeiten, bool Ausdrücke (false / true) und vieles mehr.
// Deklaration einer Variablen mit dem Namen i
int i;
// Initialisierung der Variable i mit dem Wert 5
i = 5;
Arithmetische Operationen
Mit Variablen lässt es sich bequem arbeiten. So können Operationen wie Addition, Subtraktion, Multiplikation oder Division durchgeführt werden.
// Definition der Variable i mit dem Wert 8
int i = 8;
// i um 1 erhöhen
i = i + 1; // ergibt 9
// i um 2 erhöhen
i += 2; // ergibt 11
Schleifen
Schleifen sind in Programmen sehr oft benötigte Operationen. Mit ihnen können viele verschiedene Szenarien implementiert werden. In den folgenden 2 Beispielen wird die Variable i in einer Schleife ausgegeben und jeweils um 1 erhöht. Einmal wird dazu die foreach Schleife angewendet, das andere Mal die while Schleife
foreach Schleife
for (int i = 0; i < 10; i++)
{
Console.WriteLine($"i == {i}");
}
while Schleife
int i = 0;
while (i < 10)
{
Console.WriteLine($"i == {i}");
i++;
}
Klassen
Mithilfe von Klassen können eigene Datentypen definiert werden. Klassen stellt man sich am besten als Bauplan vor. Mithilfe dieser Klassen werden Objekte instanziiert. Das ist wie beim Hausbau. Es gibt einen Bauplan (Klasse) und das gebaute Haus ist das Objekt.
Anbei eine sehr vereinfachte Klasse Person. Die Klasse Person hat 3 Properties (FirstName, LastName, Age). Diese Properties werden beim Aufruf des Konstruktors befüllt. In der Zeile 24 wird das Objekt Person instanziiert. Danach wird das Objekt in die Console geschrieben, dafür wurde in Zeile 14 die ToString() Methode der Basis Klasse überschrieben.
public class Person
{
public string FirstName { get; private set; }
public string LastName { get; private set; }
public int Age { get; private set; }
public Person(string firstName, string lastName, int age)
{
FirstName = firstName;
LastName = lastName;
Age = age;
}
public override string ToString()
{
return $"Hello, my name is {FirstName} {LastName} and I´m {Age} years old.";
}
}
class Program
{
static void Main(string[] args)
{
var person = new Person("John", "Doe", 27); // creates a new object of type Person
Console.WriteLine(person); // Hello, my name is John Doe and I´m 27 years old.
Console.ReadLine();
}
}
Vererbung
C# und andere objektorientierte Programmiersprachen unterstützen das Konzept der Vererbung. Ein sehr wichtiges und sehr mächtiges Konzept. Sehen wir uns dazu eine Basis bzw. Parent Klasse Animal an und 2 Child Klassen (Dog und Cat), die von der Basis Klasse Animal erben.
using System;
namespace Inheritance
{
class Program
{
static void Main(string[] args)
{
var dog = new Dog();
var cat = new Cat();
Console.WriteLine(dog); // I´m a Dog
dog.Cry(); // Wow wow
Console.WriteLine(cat); // I´m a Cat
cat.Cry(); // Miau miau
Console.ReadKey();
}
}
public abstract class Animal
{
public override string ToString()
{
return $"I´m a {GetType().Name}";
}
public abstract void Cry();
}
public class Dog : Animal // Dog inherits from Animal
{
public override void Cry()
{
Console.WriteLine("Wow wow");
}
}
public class Cat : Animal // Cat inherits from Animal
{
public override void Cry()
{
Console.WriteLine("Miau miau");
}
}
}
LINQ
LINQ ist eine mächtige Abfragesprache, die direkt in C# integriert wurde. Als Entwickler kann man somit die unterschiedlichsten Datenbestände abfragen, egal ob eine SQL-Datenbank, ein XML-Dokument oder sonstige Datenstrukturen. Der große Vorteil daran ist, dass die Abfragesyntax immer gleich bleibt.
using System;
using System.Linq;
...
// numbers
var numbers = new int[] { 4, 2, 14, 25, 1, 101 };
// LINQ expression to select numbers < 10
var numbersSmallerThan10 =
from number in numbers
where number < 10
select number;
// display numbers which are smaller than 10
foreach(int number in numbersSmallerThan10)
{
Console.WriteLine(number);
}
Console.ReadKey();
Du möchtest weniger investieren? Dann reduziere den Preis für den C# Kurs. Einfach den Preis-Balken zum gewünschten Betrag bewegen.