Datenstrukturen, Teil 1

Besonderheiten in Speicherverwaltung, Geschwindigkeit, Dynamik.


Struktur

  • value type (im Stack lokalisiert, wird als Kopie weitergereicht, bei Änderung wird die Kopie geändert)

  • können leer, aber niemals null sein


struct TestS

{

public int zahl;

public object obj;

}


class TestC

{

public int zahl;

public object obj;

}


// 1. Instanz der Klasse

TestC testc1 = new TestC();

testc1.obj = new Button();

testc1.zahl = 10;


// 2. Instanz der Klasse

TestC testc2 = new TestC();


// Gleichsetzung der 2. Instanz der Klasse mit der 1. Instanz

testc2 = testc1;


//Änderung der 1. Instanz der Klasse

testc1.obj = null;

testc1.zahl = 5;


// Was ist passiert? Klassen sind Referenztypen!

// Daher wird mit Änderung der 1. Instanz AUCH die 2. Instanz geändert, da sie auf das selbe Objekt verweisen.

// Somit gilt jetzt auch für die 2. Instanz: testc2.obj == null und testc2.zahl == 5.


// 1. Instanz der Struktur

TestS tests1 = new TestS();

tests1.obj = new Button();

tests1.zahl = 10;


// 2. Instanz der Struktur

TestS tests2 = new TestS();


// Gleichsetzung der 1. Instanz der Struktur mit der 2. Instanz

tests2 = tests1;


// Änderung der 1. Instanz der Struktur

tests1.obj = null;

tests1.zahl = 5;


// Was ist passiert? Strukturen sind Wertetypen!

// Daher wird mit Änderung der 1. Instanz NICHT die 2. Instanz geändert, da diese eine Kopie darstellt.

// Somit gilt weiterhin für die 2. Instanz: tests2.obj == Button und tests2.zahl == 10.