HSR MsTe
MsTe, DotNet, .Net, HSR, Hochschule Rapperswil
MsTe, DotNet, .Net, HSR, Hochschule Rapperswil
-
- 1 / 52
-
Lernkarten
.NET Code wird direkt in Maschinencode kompiliert.
Sie können eine in einer anderen .NET-Sprache geschriebene Komponente in Ihrem C#-Projekt einbinden.
Welcher Programmiersprache sieht der Microsoft Intermediate Language Code am ähnlichsten?
Assembler.
Wie heist das Äquivalent der Microsoft Intermediate Language in Java?
Java Bytecode
Der Just in Time Compiler (JIT) kompiliert eine Methode bei jeder Ausführung. Wahr oder falsch?
Falsch. Er kompiliert sie nur bei der ersten Ausführung und cached ihr Maschinencode für spätere Ausführungen.
Ein Assembly enthält Metadaten und IL-Code von genau einer Klasse.
Assemblies können weitere Assemblies beinhalten.
Wieso sind Metadaten in Assemblies überhaupt nötig?
Zur Beschreibung der Typen. JIT-Compiler braucht dies zur Erzeugung von Maschinencode.
Structs haben einen kleineren Memory Footprint als Classes.
String ist ein Reference Type.
Unboxing erreicht man durch implizite Type Casts.
Beim Boxing kann eine Exception auftreten.
Was passiert, wenn eine Value Type Variable einer anderen Value Type Variable zugewiesen wird?
Der Wert der Variable wird an den Speicherplatz der anderen Variable kopiert.
Was passiert, wenn eine Value Type Variable einer Methode übergeben wird?
Der Wert wird kopiert.
Was passiert, wenn eine Reference Type Variable einer Methode übergeben wird?
Die Objekt-Referenz wird kopiert.
Jedes beliebige Assembly kann in den Global Assembly Cache installiert werden? Wahr oder falsch?
Falsch, nur für Assemblies mit einem Strong Name ist dies möglich
Aus welchen Elementen setzt sich ein Strong Name eines Assemblies zusammen?
Bezeichnung, Versionsnummer, Kulturinformationen, Public Key Token
Mit dme Tool csc.exe lassen sich auch VB.NET Dateien kompilieren.
Kann eine int-Variable einer uint Variable zugewiesen werden?
Wiese könnte das Zuweisen einer int-Variable zu einer uint-Variabe ein Problem sein?
Wenn der int negativ wäre und dann dem vorzeichenlosen uint zugewiesen wird, geht das Vorzeichen verloren
Ist die Klasse String ein Value- oder ein Reference Type?
Von welcher Basisklasse leitet enum ab, sofern nichts anderes angegeben wird?
Int32
Wieso sollte dieses Verhalten (Ableiten von Enums von Int32) manuell übersteuert werden?
Um den Wertebereich zu vergrössern / zu verkleinern. Durch Verkleinern wird die Speichernutzung effizienter.
Was ist die Krux dabei, wenn ein Enumerationstyp von byte, sbyte, short usw. ableitet?
Es handelt sich um Value Types, welche eigentlich per Definition nicht abgeleitet werden können.
Faktisch wird dies intern auch nicht gemacht, es wird einfach syntaktisch so dargestellt.
Welche zwei Arten von multidimensionalen Arrays bietet .NET?
- Rechteckig: alle Dimensionen fix angegeben
- Jagged (ausgefranst): Array erster Dimension speichert auf jeder Position ein weiteres Array variabler Länge
Was ist der Vorteil bei der Verwendung von Blockmatrizen (rechteckigen, mehrdimensionalen Arrays)?
- Speicherplatz-Effizienz
- Schnelleres Allozieren
- Schnellere Garbage Collection
- NICHT: schnellerer Zugriff
- Ja, da Methode überdeckt wird und kein Dynamic Binding angewandt wird
- Nein, beim Überschreiben einer Methode (mit Dynamic Binding) muss der Rückgabewert übereinstimmen resp. konkreter als jener von der überschriebenen Methode sein
Was ist ein Delegate?
Ein Typ.
Auf welcher Ebene / wo im Code wird ein Delegate-Typ deklariert?
Auf Namespace-Ebene wie Klasse, Interfaces, etc. Also ausserhalb einer Klasse.
Was kann einer Delegate-Variable zugewiesen werden?
Methoden, welche die Signatur inkl. Rückgabetyp des Delegate-Typs erfüllen (= Delegate Instanz)
Deklarieren Sie ein "Calculator" Delegate mit zwei "int"-Parametern und "int" als Rückgabewert!
public delegate int Calculator (int a, int b);
Reklarieren Sie eine Variable "add" vom Typ "Calculator" (Delegate Typ mit int als Rückgabewert und zwei int Parametern)!
private Calculator add;
Weisen Sie dem Delegate eine anonyme Methode zu.
Delegate: public delegate int Calculator (int a, int b);
Delegate-Variable: public Calculator add;
add = delegate (int a, int b) { return a + b; } ;
Führen Sie das Delegate "add" aus.
delegate int Calculator(int a, int b);
Calculator add;
int result = add(3, 4);
Was ist ein Multicast-Delegate?
Alle Delegate-Typen können auch Multicast-Delegates sein, wenn man ihnen mehr als eine Methode zuweist.
--> Ein Delegate mit mehreren Callback-Methoden