Laden...

Ideen was ich programmieren könnte, um mich einbisschen in C# einzuarbeiten?

Erstellt von dannyyy vor 19 Jahren Letzter Beitrag vor 19 Jahren 8.026 Views
D
dannyyy Themenstarter:in
62 Beiträge seit 2004
vor 19 Jahren
Ideen was ich programmieren könnte, um mich einbisschen in C# einzuarbeiten?

Hi

Ich war bisher VB.NET programmierer (geübter Anfänger) und möchte nun den Umstieg zu C# wagen, da mir die C Syntax und allgemein C besser gefällt.

Sonst was Programmieren angeht bin ich kein Anfänger mehr.

Habt ihr irgend welche Ideen was ich programmieren könnte, um mich einbisschen in C# einzuarbeiten?

Gruss
Danny

X
2.051 Beiträge seit 2004
vor 19 Jahren

"Hello, World!" ?? 😁

4.506 Beiträge seit 2004
vor 19 Jahren

Hallo!

Also das erste krasseste was ich neu unter C# erleiden musste, alles sind Objekte und Übergaben als Referenz ist unschön.

Daher als erste kleine Übung würde ich empfehlen:

Entwerfe eine Klasse mit einer Methode, welche 2 Übergabeparameter (z.B. Int) besitzt.

Jetzt die Methode so ausfüllen, dass zum Schluß beide Parameter vertauscht sind.


Lösungsansatz unter C#

Unter C++ hat man hier mit Pointern gearbeitet, das geht unter C# nicht.

Unter C# ist es nicht mehr so ohne weiteres möglich, meine komplette Lösung war es, die Rückgabewerte einzeln aus der Klasse (mit 2 versch. Methoden [Stichwort get/set] herausgelesen) habe.


Wer dieses Prinzip verstanden hat, der kann anfangen C# zu Programmieren.

Ich musste leider leidlich umgekehrte Erfahrung machen (ich hab das Prinzip erst später kapert!).

Viel Spaß weiterhin mit C#!

Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

N
4.644 Beiträge seit 2004
vor 19 Jahren

Original von norman_timo
Hallo!

Also das erste krasseste was ich neu unter C# erleiden musste, alles sind Objekte und Übergaben als Referenz ist unschön.

Daher als erste kleine Übung würde ich empfehlen:

Entwerfe eine Klasse mit einer Methode, welche 2 Übergabeparameter (z.B. Int) besitzt.

Jetzt die Methode so ausfüllen, dass zum Schluß beide Parameter vertauscht sind.


Lösungsansatz unter C#

Unter C++ hat man hier mit Pointern gearbeitet, das geht unter C# nicht.

Unter C# ist es nicht mehr so ohne weiteres möglich, meine komplette Lösung war es, die Rückgabewerte einzeln aus der Klasse (mit 2 versch. Methoden [Stichwort get/set] herausgelesen) habe.

Was erzählst Du denn hier?

Natürlich kann man eine Swap Methode in C# mit Referenzen erstellen!

public void Swao(ref int p1, ref int p2)
4.506 Beiträge seit 2004
vor 19 Jahren

Ja, das habe ich doch gesagt:

Referenzübergabe sollte man meiner Meinung nach vermeiden, denn C# kann ja z.B. auch über Remoting arbeiten, dann wirds n bissl schwierig mit Referenzen!

Besser ist es so gut wie möglich auf Referenzen zu verzichten, denn das macht auch das objektorientierte wieder kaputt. Dann könnte ich auch wieder in der alten C / C++ Welt bleiben und mit Pointern arbeiten.

Selbstverständlich geht das mit "ref"!

Objektorientiert heißt ja auch kapselung der Daten auf das Objekt. Mit Referenzen schränkt man sich wieder nur ein, weil ein übergeordnetes Objekt wieder relevant wird.

Vielleicht bin ich ein Wenig hart, wenn ich sage, man soll keine Referenzen übergeben, aber so lassen sich Objekte auch als Objekte benutzen.

Ciao
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

X
2.051 Beiträge seit 2004
vor 19 Jahren

Original von norman_timo
Referenzübergabe sollte man meiner Meinung nach vermeiden, denn C# kann ja z.B. auch über Remoting arbeiten, dann wirds n bissl schwierig mit Referenzen!

He?? sieh mal System.MarshalByRefObject

Besser ist es so gut wie möglich auf Referenzen zu verzichten, denn das macht auch das objektorientierte wieder kaputt. Dann könnte ich auch wieder in der alten C / C++ Welt bleiben und mit Pointern arbeiten.

Was soll da kaputt gehen? Objektorientiert bedeutet nicht auf Pointer oder Referenzen verzichten zu müssen.

Objektorientiert heißt ja auch kapselung der Daten auf das Objekt. Mit Referenzen schränkt man sich wieder nur ein, weil ein übergeordnetes Objekt wieder relevant wird.

Was für übergeordnetes Objekt? Wenn ich eine Instanz von ArrayList in meiner Anwendung erstelle, welches übergeordnete Objekt ist dabei relevant? Heißt das etwa, dass ArrayList in beim Benutzen in einer von Form abgeleiteten Klasse sich anders verhält, als in einem UserContol?

Vielleicht bin ich ein Wenig hart, wenn ich sage, man soll keine Referenzen übergeben, aber so lassen sich Objekte auch als Objekte benutzen.

sieh oben

4.506 Beiträge seit 2004
vor 19 Jahren

Also ich sehe, hier wird man scharf beschossen!

Ich möchte mal einen kleinen Auszug aus dem Buch Nitty Gritty C# von Jürgen Bayer geben, weil

a) ich anscheinend nicht die richtigen Worte finde, dass mich jemand versteht,
und
b) die Kompetenz dieses Autors wohl außer Frage steht.

Hoffe nur, dass ich hiermit keine Urheberrechte verletze, und würde diesen Ausschnitt als Werbung für o.g. Buch deklarieren:

_ Original aus Nitty Gritty C# von Jürgen Bayer: (Kapitel 4.6.4 Seite 175)_

4.6.4 Übergeben von Referenztypen

In C# sollten Sie Referenztypen immer by Value übergeben. Das unterscheidet C# von vielen anderen Sprachen, bei denen diese Typen By Reference übergeben werden müssen. In C# kopiert der Compiler aber den Wert der Referenz in die lokale Argument-Variable. Der Wert der Referenz ist die Adresse des Objekts im Speicher. Sie müssen natürlich beachten, dass Sie das übergebene Objekt nach außen verändern, wenn Sie innerhalb der Methode Eigenschaften des Objekts beschreiben.

Hinweis: _ Sie können Referenztypen auch mit ref übergeben. Dann verlangsamen Sie die Bearbeitung des Objekts innerhalb der Methode allerdings, weil der Compiler zwei Referenzen auflösen muss: die auf die Objekt-Variable und die auf das Objekt._

Übrigens ist das ein sehr hervorragendes Buch, für nur 7,95 Euro noch ein schnäppchen dazu!

ISBN:3-8273-1856-4

Ich kann nur allen empfehlen dieses Buch zu kaufen, es ist genial um C# zu verstehen!

Ich bin gespannt auf eure Antworten!

Ciao
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

R
139 Beiträge seit 2004
vor 19 Jahren

manchmal wird man halt stark beschossen, ABER NICHT erschossen 😉

schieß doch zurück, wenn du dir sicher bist und paar treffer einstecken kannst!

nimm das mit Xqgene nicht zu ernst, der bissle crazy (wer ist das hier nicht) ist aber ein netter.

apropro zitate oder allg. nachlesen, hab das was, was gut passt:

... nicht irgendwas nachreden was man vielleicht mal irgendwo gelesen hat!

keiner kommt mit wissen auf die welt, deswegen gibt es auch sachbücher 8)

gruß,

r00t

posted by the real prince of persia

D
dannyyy Themenstarter:in
62 Beiträge seit 2004
vor 19 Jahren

Ähhhm gg
Wenn ich schnell unterbrechen darf 😉 Hat jemand gerade ein Idee für mich?

T
4 Beiträge seit 2004
vor 19 Jahren

Da Referenztypen per Definition als Referenz übergeben werden, wäre eine Verwendung von ref doppeltgemoppelt und deshalb unsinnig.
Das meinte der oben genannte Autor meiner Meinung nach 😉

R
139 Beiträge seit 2004
vor 19 Jahren

am besten du suchst dir eines deiner vb projekte aus (du sagtest ja dass du erfahrung hast) und versuchst die funktionalität mit c# zu erreichen.

der größte unterschied ist der Syntax (vergleich von vb.net zu c#.net).

gruß,

r00t

posted by the real prince of persia

N
4.644 Beiträge seit 2004
vor 19 Jahren

Original von r00t

... nicht irgendwas nachreden was man vielleicht mal irgendwo gelesen hat!

He he, das kommt mir doch bekannt vor. 😁

@dannyyy

Was hast Du denn bisher programmiert.
.NET ist groß da kann man viel programmieren, welche richtung ist Dein Interesse
Datenbanken
Grafik
Netzwerk
Internet ....

Wie wäre es denn mit einem Notepad, welches wie das von Windows funktioniert?

D
dannyyy Themenstarter:in
62 Beiträge seit 2004
vor 19 Jahren

Bisher habe ich kleinere Dinge realisiert wie:
-DuplicateAnalyzer (Analysiert eine Textdatei und filtert doppelte Einträge raus)
-Kleine Games wie Viergewinnt und so
-Zum testen abfragen von Mails oder FTP Daten

Bin jetzt mal dran ein Mastermind zu Proggen in C#

Was die interessen angehen. (1 - Wenig, 3 - Sehr)
Datenbank (3)
Grafik (1)
Netzwerk / Internet (3)
Spiele 2D (2)
Spiele 3D (1)

Am sinnvollsten wäre es irgend was Nützliches zu Programmieren, welches den Alltag erleichtern kann.

Ich gedenke ein Programm zu schreiben, welches Selbständig Server Anwendungn überwacht (Port und Kommunikation). Und sobald einer nicht mehr erreichbar sein wird, gibts eine Alarmmeldung (nicht lokal) oder er versucht den Dienst oder das Programm neu zu starten (lokal).
Kommerzielle Produkte gibt es einige, die jedoch über dem Budget eines Schülers sind.

R
139 Beiträge seit 2004
vor 19 Jahren

ich rate dir immernoch das zu coden was du schonmal gemacht hast, bei neuen aufwändigen programmen wo du dich in den syntax und die klassen einarbeiten mußt kann es gut sein dass du schnell die lust am "umstieg" verlierst.

mach doch den DuplicateAnalyzer nach (interessiert mich)

gruß,

r00t

posted by the real prince of persia

X
2.051 Beiträge seit 2004
vor 19 Jahren

Da bin ich wieder

@norman_timo
was der Autor meint, kann man anhand folgendes Bsp. veranschaulichen.
Führe das Prog mal aus und beobachte genau die Ausgabe:


using System;

namespace ConsoleApplication1
{
	/// <summary>
	/// Zusammenfassung für Class1.
	/// </summary>
	class Class1
	{
		/// <summary>
		/// Der Haupteinstiegspunkt für die Anwendung.
		/// </summary>
		[STAThread]
		static void Main(string[] args)
		{
			test t = new test("text");
			Class1 c = new Class1();
			c.byval(t);
			Console.WriteLine(t.text);
			c.byref(ref t);
			Console.WriteLine(t.text);
			c.reference(t);
			Console.WriteLine(t.text);

			Console.ReadLine();
		}

		public void byref(ref test t)
		{
			t = new test("byref");
		}

		public void byval(test t)
		{
			t = new test("byval");
		}

		public void reference(test t)
		{
			t.text = "reference";
		}
	}

	class test
	{
		public string text;
		public test(string t)
		{
			text = t;
		}
	}
}

leider zeigt der Autor selbst nicht mal ein Bsp., um seine Worte zu erläutern.

Original von r00t
nimm das mit Xqgene nicht zu ernst, der bissle crazy (wer ist das hier nicht) ist aber ein netter.

ja, ich mag dich auch 😁

L
667 Beiträge seit 2004
vor 19 Jahren

Mal schnell zum Thema Objektorientiert und Referenzen, natürlich geht die Objektorientierung ein Stück weit verloren wenn sich eine Änderung an einer Variablen die ich von irgendwo her übergeben bekomme auch auf die Klasse von der sie übergeben wurde (und evtl. auch noch innerhalb anderer Klassen, die ebenfalls mit dieser Referenzt arbeiten) auswirkt.

Wer in C# mit Referenzen arbeitet gehört meiner Meinung nach erschossen, denn gerade C# bietet endlich Konzepte an mit denen die absolute Kapselung nicht mehr nur eine schöne Utopie ist.... Referenzen in C# zu verwenden ist in etwa so als ob man an nen Lamborghini nen Fuchsschwanz dranhängt... Dann könnte man auch beim Manta bleiben..

"It is not wise to be wise" - Sun Tzu

F
71 Beiträge seit 2004
vor 19 Jahren

Original von Lynix
......
Wer in C# mit Referenzen arbeitet gehört meiner Meinung nach erschossen, denn gerade C# bietet endlich Konzepte an mit denen die absolute Kapselung nicht mehr nur eine schöne Utopie ist.... Referenzen in C# zu verwenden ist in etwa so als ob man an nen Lamborghini nen Fuchsschwanz dranhängt... Dann könnte man auch beim Manta bleiben..

Ähm.... nimms nicht persönlich, aber das ist gelaber von jemanden, der Referenzen, Pointer usw. entweder nicht gerafft hat, oder zu faul war sich damit zu beschäftigen.
GRADE mit der expliciten Nutzung von Refenrenzen UND MIT DEM VERSTÄNDNIS dafür machst du aus deinem Manta einen Lamborghini.

Ich benutze permanent Referenzen. Wie machst du gescheite Rekursion ohne Referezen? Warum verbrauchst du unnötig Speicherplatz und Rechenzeit um Objekte zu doppeln?
Um Dich zu beruhigen..... du benutzt jedesmal wenn du mit einem Objekt oder einem string arbeitest mit einer einer Referenz... oder arbeitest du nur mit Wert-Typen auf dem Stack? 😉

Bei solchen Aussagen bin ich SEHR FROH, das in C# das goto auf switch-case beschrängt ist.....

4.506 Beiträge seit 2004
vor 19 Jahren

Hallo!

Ich bin irgendwie der Meinung von Lynix, auch wenn ich nicht gleich jemanden erschießen würde.

Ich hab mit C angefangen professionell zu programmieren, also ist mir sehr wohl bewusst, was Zeiger und Pointer sind. In C++ hat man dann erste Versuche der Objektorientierung hineingenommen, musste aber immer wieder Einschränkungen machen.

In C# ist Objektorientierung nun endlich Hauptsache, und es ist nun mal so, dass Referenzen nix mit Objektorientierung zu tun hat! Man kann nicht in anderen Objekten "rumpfuschen".

Auch wenn Microsoft oder die Entwickler von C# (wer das auch immer ist) die Möglichkeit gegeben hat Objekte per Referenz zu übergeben, dann hat er das nur gemacht, um sozusagen "kompatibel" zu C und C++ zu bleiben.

Erst wenn man es geschafft hat alle Referenzübergaben in ByValue umzuwandeln (und das geht, indem man alles objektrelevante in ein Objekt packt, und nicht mehr, und nicht weniger!), dann hat man Objektorientierung erst verstanden.

Was Lynix hier verdeutlichen will, ist die Tatsache, dass C# endlich objektorientiert gestaltet ist, und eine Referenzübergabe eine Vergewaltigung an dem Konzept ist.

Aber um jetzt nicht noch mehr Zündstoff hier zu bieten, das Thema heißt Programieridee, und ich habe danyyy versucht ein Einführungsbeispiel zu geben, welches ganz deutlich die Objektorientierung hervorhebt (Swap Bsp.).

@Ftee

Ich benutze permanent Referenzen. Wie machst du gescheite Rekursion ohne Referezen? Warum verbrauchst du unnötig Speicherplatz und Rechenzeit um Objekte zu doppeln?

???-> Soweit ich weiß, ist es so, dass Objekte im Heap gespeichert werden, und wenn man diese per Referenz übergibt, DANN wird eine Kopie im Stack gemacht und nach einer gewissen unbenuzten Zeit wieder aus dem Stack entfernt und im Heap überschrieben. Falls währenddessen sich das Objekt im Heap ändert, wird automatisch auch die Kopie im Stack verändert. --> _Also meiner Meinung nach ist genau das saulangsam! _

Ich weiß nicht wieviele "echte" Informatiker hier in diesem Forum tummeln, aber ich hab das auch so gelernt (Meine Studienrichtung ist IT), und ich weiß nicht warum mir Dozenten hier Blödsinn beibringen sollten, also glaub ich das mal so, was die sagen!
Die Dozenten an der Berufsakademie sind übrigns allesamt aus der Praxis, unterrichten also nur nebenher, die wenden das alles tagtäglich an, warum sollte das verkehrt sein?

Um dem ein Ende zu setzen, ich denke wir beenden das Thema Referenzen und ByValue hier mal, auch weil es Off-Topic ist. Jeder sollte das benutzen wonach ihm ist.

Für dannyyy:
Probier es mal ohne Referenzen, und probier es mal mit Referenzen, und das was Dir besser liegt, das nimmst Du als dein Favorit.

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

333 Beiträge seit 2004
vor 19 Jahren

Mein Senf:
Also erstmal ist die Möglichkeit der Übergabe eines Wertes als Referenz unabdingbar. In bestimmten Fällen, wie zum Beispiel API-Aufrufe benötigt man diese Übergabeart. Das hat also nix mit Kompatibilität zu C/C++ zu tun. Von der kann eh nicht die Rede sein 🙂 Aber an sich verstößt die Übergabe von referenzierten Werttypen oder Objekttypen schon gegen Prinzipien der objektorientierten Programmierung. Mit dem out-Schlüßelwort beispielsweise versucht C# aber schon da noch etwas Ordnung reinzubringen. Im Endeffekt ist es jedoch so, daß C# einem die Möglichkeiten gibt bzw. die freie Wahl lässt. Es gibt einen Befehl "goto" und wenn es tausendfach gegen die Grundsätze der geordneten Programmierung spricht, der Befehl kann trotzdem hilfreich sein. So verhält es sich auch mit "ref". Bekannt ist das die Übergabe von Werttypen per Referenz immer performanter ist als eine Kopie dessen anzufertigen und zu übergeben. Ich persönlich finds jedenfalls positiv, daß C# einem viele Wege offen lässt. Dazu zählen eben auch Schlüßelwörter wie ref, out, goto, unchecked oder unsafe. Wers mag oder braucht, der solls einfach benutzen 😉

([bb]|[^b]{2})

C
1.215 Beiträge seit 2004
vor 19 Jahren

also, ich verstehe nicht, warum in mehreren threads in den letzten tagen immer so sehr darauf bestanden wird, dass es als mass dient, ob eine sprache oop ist oder nicht, inwiefern sie mit referenzen arbeitet oder nicht...

oop bedeutet für mich in erster linie:

  • erstellung einer struktur u. hierarchie durch klassen und namespaces
  • dadurch die möglichkeit eigene objekte mit properties und methoden zu erstellen, die in sich gekapselt 'zusammengehörige' prozeduren und eigenschaften auch zusammenzufassen
  • die möglichkeit, ein berechtigungs- und zugriffssystem auf diese objekte zu legen

DAS entscheidet, ob eine sprache oop ist (und c++ ist das ganz gewiss in jeder hinsicht!) - und nicht, ob nun bestimmte objekte andere verändern können, weil referenzen verwendet werden oder nicht.
unter c++ wie unter c# oder meinetwegen auch java hatte und hat der programmierer zu jeder zeit die möglichkeit der entscheidung, ob er nun referenzen oder tiefe kopien verwenden möchte.

grtz
chief

F
71 Beiträge seit 2004
vor 19 Jahren

Original von norman_timo
Erst wenn man es geschafft hat alle Referenzübergaben in ByValue umzuwandeln (und das geht, indem man alles objektrelevante in ein Objekt packt, und nicht mehr, und nicht weniger!), dann hat man Objektorientierung erst verstanden.

Unsinn. Du KANNST nicht alles byvalue machen, da eine value als Wertetyp definiert ist, und davon gibts KAUM welche. Nicht mal der string in c# ist ein echter Wertetyp.
Wertetypen liegen auf dem Stack, alles andere im Heap.

Was Lynix hier verdeutlichen will, ist die Tatsache, dass C# endlich objektorientiert gestaltet ist, und eine Referenzübergabe eine Vergewaltigung an dem Konzept ist.

.....
Das ist purer Unsinn.

@Ftee

Ich benutze permanent Referenzen. Wie machst du gescheite Rekursion ohne Referezen? Warum verbrauchst du unnötig Speicherplatz und Rechenzeit um Objekte zu doppeln?
???-> Soweit ich weiß, ist es so, dass Objekte im Heap gespeichert werden, und wenn man diese per Referenz übergibt, DANN wird eine Kopie im Stack gemacht und nach einer gewissen unbenuzten Zeit wieder aus dem Stack entfernt und im Heap überschrieben. Falls währenddessen sich das Objekt im Heap ändert, wird automatisch auch die Kopie im Stack verändert. --> _Also meiner Meinung nach ist genau das saulangsam! _

Ich erklärs Dir:
Objekte landen im Heap. Richtig. Du greifst auf die Objekte über eine Referenz zu. Die Referenz zeigt nur auf das Objekt, und ist es nicht selbst. Es ist möglich mehrere Referenzen auf das selbe Objekt zu halten, genauso wie es möglich ist mehrere Strassenschilder in verschiedenen Strassen aufzustellen, die alle den Weg in das Zentrum beschreiben.
Davon hast du aber nicht bei jedem Schild eine Kopie des Zentrums liegen, sondern immer noch nur ein und das selbe Zentrum. Die Betonung liegt hier auf "eins".

Ich weiß nicht wieviele "echte" Informatiker hier in diesem Forum tummeln, aber ich hab das auch so gelernt (Meine Studienrichtung ist IT), und ich weiß nicht warum mir Dozenten hier Blödsinn beibringen sollten, also glaub ich das mal so, was die sagen!
Die Dozenten an der Berufsakademie sind übrigns allesamt aus der Praxis, unterrichten also nur nebenher, die wenden das alles tagtäglich an, warum sollte das verkehrt sein?

Es gibt jetzt zwei Möglichkeiten, wobei ich niemanden zu Nahe treten will.
a) Die Dozenten haben keine Ahnung.
b) Du hast es falsch verstanden.

Egal ob a oder b, das im Stack eine Kopie des Objektes erstellt wird, ist falsch. Es wird nur eine Kopie des Pointers erstellt. (Es wird ein neues Schild gemalt)

Für dannyyy:
Probier es mal ohne Referenzen, und probier es mal mit Referenzen, und das was Dir besser liegt, das nimmst Du als dein Favorit.

Zum hundertsten (und in diesem Thread auch zum letzten) mal:
**Alles was du mit "new" erzeugt ist eine Referenz auf das Objekt! Ihr habt gar keine Wahl, du arbeitest bereits mit Referenzen! **

probiert folgendes aus, damit ihr das glaubt....


public void init () {
ArrayList ar = new ArrayList();
   int a;
   a = 10;
   ar.Add("test");
   change_array(ar, a);
   foreach(string t in ar) {
      Console.WriteLine(t);
   }
   Console.WriteLine(a.ToString());
}

private void change_array(ArrayList ar, int i) {
   ar.Add("from change array");
   i = 3;
}

Da die ArrayList als Referenz übergeben wurde, weil sie nunmal ein Referenztyp ist, wirkt sich die Änderung in der zweiten Funktion auch aus. Da der int ein Wertetyp ist, wirkt es sich nicht aus. Das int wurde kopiert, von der ArrayList nur die Referenz übergeben. Punkt. Sieht man sehr schön an der Ausgabe.

Ftee

C
1.215 Beiträge seit 2004
vor 19 Jahren

jo,
wertetypen und pointer (sind ja im grunde auch nix anders) in den stack und jedes objekt in den heap - das ist überall gleich, egal ob c++, c# oder java.

im grunde müsste jeder coder in einer verwalteten sprache zu einigen lessons c++ verpflichtet werden, damit er das prinzip der werte- und referenztypen mitschneidet...

letztendlich machen java und c# nichts anderes als c++ - man kann sie sich quasi als ne art 'syntax-wrapper' von c++ vorstellen, der vor allem die pointer vorm coder verbirgt und daher natürlich auch gewährleistet, dass keine objekte im speicher verbleiben, wenn sie nicht mehr referenziert sind.

grtz
chief