C# für JavaScript-Entwickler: Ein Einstieg
May 18, 2020
Dieser Leitfaden richtet sich an Entwickler mit einem Hintergrund in JavaScript oder TypeScript und bietet eine kompakte Einführung in die grundlegenden Konzepte von C# und dem .NET-Ökosystem.
1. Projektstruktur und das dotnet-CLI
Ein typisches .NET-Projekt wird mit dem dotnet-Kommandozeilen-Tool verwaltet.
Projektstruktur
.
└── src/
└── MeinProjekt/
├── MeinProjekt.csproj
└── Program.cs
*.csproj: Die Projektdatei (im XML-Format), die Abhängigkeiten (NuGet-Pakete), die Ziel-Framework-Version und andere Build-Einstellungen beschreibt.Program.cs: Die C#-Quelldatei, die den Einstiegspunkt des Programms (Main-Methode) enthält.bin/,obj/: Verzeichnisse, die vom Build-Prozess erstellt werden und die kompilierten Artefakte (.dll-Dateien) enthalten. Sie sollten in.gitignoreeingetragen werden.
Wichtige dotnet-Befehle
# Führt das Projekt aus
dotnet run
# Fügt ein NuGet-Paket (vergleichbar mit einem npm-Paket) hinzu
dotnet add package Newtonsoft.Json
# Stellt alle im .csproj definierten Abhängigkeiten wieder her
dotnet restore
# Kompiliert das Projekt, ohne es auszuführen
dotnet build
2. Grundlegende C#-Syntax im Vergleich
C# ist eine statisch typisierte Sprache mit einer Syntax, die einige Ähnlichkeiten zu JavaScript/TypeScript aufweist.
- Starke Typisierung: Wie in TypeScript muss jede Variable einen Typ haben.
- Semikolons: Jede Anweisung muss mit einem Semikolon (
;) enden. using: Entsprichtimportin JavaScript/TypeScript und importiert Namensräume.void: Gibt an, dass eine Methode keinen Wert zurückgibt.
Beispiel:
// Importiert den System-Namensraum für den Zugriff auf die Console-Klasse
using System;
// Program.cs
// 'args' ist ein Array von Strings, das Kommandozeilen-Argumente enthält
if (args.Length > 0)
{
// String-Interpolation funktioniert ähnlich wie bei Template Literals in JS
Console.WriteLine($"Hallo, {args[0]}!");
}
else
{
Console.WriteLine("Hallo, Unbekannter!");
}
3. Typen und Datenstrukturen
Variablen
// Explizite Typisierung
int x = 34;
string name = "John";
// Implizite Typisierung mit 'var'
// Der Compiler leitet den Typ ab (hier: int), die Variable bleibt aber stark typisiert.
var y = 34;
Arrays
Arrays in C# haben eine feste Größe.
// Erstellt ein Array für 3 double-Werte
double[] grades = new double[3];
grades[0] = 90.5;
Listen (List<T>)
Listen sind flexibler als Arrays und ihre Größe kann sich dynamisch ändern. Sie sind vergleichbar mit JavaScript-Arrays.
// Import erforderlich: using System.Collections.Generic;
var grades = new List<double> { 13.2, 29.1, 33.1 };
// Fügt ein neues Element hinzu
grades.Add(52.1);
4. Klassen und Objekte (OOP-Grundlagen)
- Klasse: Ein Bauplan (
class) für Objekte. - Objekt: Eine Instanz einer Klasse.
- Felder (Fields): Private Variablen, die den internen Zustand eines Objekts speichern.
- Eigenschaften (Properties): Öffentliche Schnittstellen zum Lesen oder Schreiben von Zustandsdaten (oft mit
get;undset;). - Methoden: Funktionen, die das Verhalten eines Objekts definieren.
Beispiel:
public class Book
{
// Privates Feld zur Speicherung der Noten
private List<double> _grades;
// Öffentliche Eigenschaft (nur lesbar von außen)
public string Name { get; }
// Konstruktor: wird aufgerufen, wenn ein neues Objekt erstellt wird
public Book(string name)
{
Name = name;
_grades = new List<double>();
}
// Öffentliche Methode
public void AddGrade(double grade)
{
_grades.Add(grade);
}
}
Verwendung:
var myBook = new Book("C# für Einsteiger");
myBook.AddGrade(95.5);
Access Modifiers
public: Von überall aus sichtbar.private: Nur innerhalb der eigenen Klasse sichtbar.protected: Sichtbar innerhalb der eigenen Klasse und in abgeleiteten Klassen.
static-Member
Ein static-Member gehört zur Klasse selbst, nicht zu einer Instanz des Objekts. Er wird aufgerufen, ohne ein Objekt zu erstellen.
public class Utils
{
public static void Log(string message)
{
Console.WriteLine(message);
}
}
// Aufruf:
Utils.Log("Dies ist eine statische Methode.");
5. Debugging in VS Code
Die C#-Erweiterung für Visual Studio Code bietet eine hervorragende Debugging-Unterstützung.
F5: Startet eine Debugging-Sitzung.Ctrl+F5: Führt das Programm ohne Debugger aus.Shift+F5: Stoppt die Debugging-Sitzung.