HSR MsTe

MsTe, DotNet, .Net, HSR, Hochschule Rapperswil

MsTe, DotNet, .Net, HSR, Hochschule Rapperswil


M. G.
Diese Lernkarten behandeln fortgeschrittene Themen der Informatik auf Universitätsniveau und konzentrieren sich auf Methoden, Delegates, Variablen, Typen und Codebeispiele in der Programmierung. Sie decken Themen wie Iteratoren, generische Typen, Events, Delegates, Multicast-Delegates, Arrays, Enumerationen, Typumwandlungen und Assemblies ab. Diese Karteikarten sind besonders nützlich für Studierende und Entwickler, die ihr Verständnis von fortgeschrittenen Programmierkonzepten vertiefen möchten.
Karten
52
Lernende
2
Sprache
Deutsch
Kategorie
Informatik
Stufe
Universität
Erstellt / Aktualisiert
23.12.2019 / 11.04.2020

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.

Studieren Sie den Code. Was ist die Ausgabe auf der Konsole und wieso?

Ausgabe:

1 2

1 4

Begründung: 

  • Hier findet Boxing statt
  • Bei myList.Add() wird die Referenz auf die geboxten Objekte (1 & 2) übergeben
  • mit o1 = 4 wird ein neuen geboxtes Objekt auf dem Heap erstellt, o1 zeigt nun auf dieses
  • die Referenzen in myList zeigen aber immer noch auf die Objekte 1 & 2 auf dem Heap

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?

Kompiliert folgender Code?

Nein, Base muss mindestens die gleich hohe Sichtbarkeit haben wie die Subklasse.

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

Skizzieren Sie das Memory Layout des folgenden Codes.

Wie verändert sich das Memory-Layout wenn Point von «class» nach «struct» ändert?

Was schreibt die Methode Test( ) auf die Konsole?

34

Funktioniert folgendes Szenario? Car.Drive() gibt «void» zurück ElectroCar.Drive() gibt «int» zurück.

 

Würde der Code funktionieren, wenn ElectroCar.Drive() nicht «new virtual» sondern «override» wäre?

  • 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

Lernen