Was ist der wesentliche Unterschied zwischen C# und einer herkömmlichen Programmiersprache?
Managed:
Was versteht man unter Garbage Collection?
Garbage Collection ist eine automatische Speicherverwaltung. Es werden dabei zur Laufzeit nicht länger benötigte Speicherbereiche automatisch identifiziert und freigegeben.
Simple Garbage Collection
Was sind Properties und wozu werden sie verwendet?
Mischung aus Methode und Datenfeld
Was versteht man unter Casting?
Was versteht man unter Boxing? Beispiel
Boxing bezeichnet die Umwandlung von Werttypen in object (Referenztyp)
Unboxing: Werttyp aus object extrahieren
Kann zu schlechter Performance führen
InvalidCastException
Wie werden Parameter übergeben?
In C# können Parameter als Werte oder als Verweis an Parameter übergeben werden. Durch die Übergabe als Verweis kann der Wert des Parameters geändert werden und diese Änderung bleibt in der Aufrufumgebung erhalten. Um einen Parameter als Verweis zu übergeben, verwendet man ref oder out.
Ein Argument, das an einen ref-Parameter übergeben wird, muss vor der Übergabe initialisiert werden. Dies unterscheidet sich von den out-Parametern, deren Argumente nicht explizit initialisiert werden müssen, bevor sie übergeben werden.
Member einer Klasse können keine Signaturen haben, die sich nur durch ref oder out voneinander unterscheiden.
Was ist ein Event?
public event PropertyChangedEventHandler
PropertyChanged;
private void OnPropertyChanged
(string propertyName)
{
this.PropertyChanged?.Invoke
(this, new PropertyChangedEventArgs
(propertyName));}
arcDiagramSettings.PropertyChanged
+= this.ArcDiagramSettings_PropertyChanged;
private void ArcDiagramSettings_PropertyChanged(object sender, PropertyChangedEventArgs e){}
Was ist ein Delegate?
Ein Delegate ist ein Objekt das einen Verweis für eine Methode aufnehmen kann.
Die Methode müssen die gleichen Parameter und Rückgabewerte wie der Delegate haben.
Erzeugung mit Referenz auf:
Aufruf
handler1(true);
handler1.Invoke(true);
private delegate void aufruf(string s, string x);
private void m1(string str1, string str2)
{
MessageBox.Show(str1 + “ “ + str2);
}
aufruf myAufruf1 = new aufruf(m1);
myAufruf1("Hallo", "Welt");Was ist ein Assembly?
Ein Assembly ist der complierte Code in MSIL (Microsoft Intermediate Language) als .exe oder .dll zusammen mit Metadaten.
Assemblies sind die Grundbausteine von .NET Anwendungen. Assemblies sind nichts weiter als Dateien mit der Endung .exe bzw. .dll. Pro Projekt in einer Solution gibt es eine Assembly.
Wie werden in C# Threads programmiert?
Klasse Thread
Delegates für die Thread-Methode.
Thread thread = new Thread(ThreadMethod);
thread. Name = “Mein 1. Thread”;
thread. Start();
Wie werden in C# Threads synchronisiert?
Probleme beim Zugriff auf gemeinsame Daten
–> Gemeinsamen Zugriff vermeiden
Möglichkeiten der Synchronisation im .NET
Was ist ein Namespace?
Das namespace-Schlüsselwort wir verwendet um einen Bereich zu deklarieren, der einen Satz von verknüpften Objekten enthält.
Namespaces verfügen über folgende Eigenschaften:
Wann wird der Destruktor ausgeführt?
Der Programmierer kann nicht steuern, wann der Destruktor aufgerufen wird, da dies durch den Garbage Collector bestimmt wird. Der Garbage Collector sucht nach Objekten, die von der Anwendung nicht mehr verwendet werden. Wenn er ein Objekt findet, das entfernt werden könnte, ruft er den Destruktor auf (wenn vorhanden) und beansprucht den durch das Objekt belegten Speicherplatz. Destruktoren werden darüber hinaus beim Beenden des Programms aufgerufen.
Was ist der Unterschied zwischen class und struct?
Struct ist ein benutzerdefinierter Werttyp
Was versteht man unter Operator Overloading? Wozu wird dies i.d.R. benötigt?
Klassen und Structs können Operatoren überladen.
public static Complex operator +(Complex a, Complex b) {}
Damit wird die Operation für Instanzen der Klasse/Struct verfügbar
Möglich u.a. für
Nicht möglich für
Was versteht man unter Serialisierung?
Die Serialisierung ist in der Informatik die Abbildung von strukturierten Daten auf eine sequenzielle Darstellungsform. Serialisierung wird hauptsächlich für die Persistierung von Objekten in Dateien und für die Übertragung von Objekten über das Netzwerk bei verteilten Softwaresystemen verwendet.
Übliche Speichermedien sind nur in der Lage, Datenströme zu speichern. Um Persistenz für ein Objekt zu erreichen, kann es serialisiert werden. Hier wird der komplette Zustand des Objekts, inklusive aller referenzierten Objekte, in einen Datenstrom umgewandelt, der anschließend auf ein Speichermedium geschrieben wird.
Nach der Serialisierung liegt ein Objekt mehrfach vor: Als externe Darstellung (z.B.: als Datei) und im Arbeitsspeicher. Wird nach der Serialisierung eine Änderung am Objekt im Arbeitsspeicher vorgenommen, hat dieses keine Auswirkung auf das serialisierte Objekt in der externen Darstellung.
Die Umkehrung der Serialisierung, also die Umwandlung eines Datenstroms in Objekte, wird als Deserialisierung bezeichnet.
Arten: Binäre, XML
Was sind Generics und wozu können sie verwendet werden?
Generics ermöglichen es Klassen, Methoden, Delegates und Events zu schreiben, die mit mehreren Datentypen verwendbar sind. Man kann mit Constraints festlegen, welche Eigenschaften die verwendeten Datentypen besitzen müssen.
Vorteile:
Werden Häufig für Collection Klassen verwendet (Listen, Arrays, Stack, Dictionary,..). Immer nur ein Datentyp, man kann nicht mischen. List<t></t>
Was sind Interfaces und wofür werden sie verwendet?
Interface beschreibt eine Schnittstelle