![]() |
Re: [C#] Fragen zu automatisch generiertem Code
Zitat:
Absolut Falsch ! Du befindest dich mit Csharp in absoluter OOP, hier befindet sich alles in einer Klasse! Zitat:
Zitat:
Gruß Torsten |
Re: [C#] Fragen zu automatisch generiertem Code
Zitat:
Also man kann es so machen (Strings mit + verbinden) jedoch passiert dann das, was sharkx gesagt hat. Man sollte die StringBuilder-Klasse dazu verwenden Zitat:
|
Re: [C#] Fragen zu automatisch generiertem Code
Hallo !
Entschuldige Generalissimo, mir wird diesere Fehler nicht mehr unterlaufen ;)
Code:
StringBuilder sb = new StringBuilder();
sb.Append("Dein Text"); Gruß Torsten |
Re: [C#] Fragen zu automatisch generiertem Code
Nur um das nochmal klarzustellen:
Es gibt in C# keine Destruktoren wie in z.B. C++ oder Delphi. Destruktoren werden für die deterministische Zerstörung von Objekten eingesetzt und sind in .net sowie in C# so NICHT vorhanden. Das, was man in C# als Destruktoren bezeichnet und was auch aussieht wie ein C++-Destruktor, ist in Wirklichkeit ein Finalizer! Es hat dieselbe Semantik wie die Finalizer der anderen .net Sprachen. Hierbei sollen die Objekte auch zerstört werden, aber der Vorgang ist nicht deterministisch! Genauer ist ein so genannter Destruktor in C# also nur eine bequeme Methode, die Object.Finalize()-Methode zu überschreiben und dabei implizit (was man sonst von Hand machen müsste) base.Finalize() aufzurufen. Managed C++ hingegen unterstützt zusätzlich einen deterministischen Destruktor, der aber vom Compiler erzeugt wird und keine CLR-Unterstützung genießt. Zitat:
Zitat:
Ein wesentlicher Unterschied ist: Bei einem herkömmlichen Destruktor sind alle Referenzen in der Klasse noch gültig, denn Kindobjekte werden erst später freigegeben. Bei einem Finalizer sind die Kindobjekte aber möglicherweise schon zerstört worden, soweit sie gemanaged sind. Darüberhinaus ist es anders als z.B. in C++, wo jede Klasse einen Destruktor hat (gegebenenfalls vom Compiler generiert), in .net eine aufwändige Sache, einen Finalizer auszuführen und somit generell zu vermeiden. Edit: Zitat:
|
Re: [C#] Fragen zu automatisch generiertem Code
Nochmals zum Thema Destruktor:
Microsoft empfiehlt in seinen Dokumenten, eine entsprechende Methode (z.b. mit dem Namen Dispose()) zu erstellen, welche die aufräumarbeiten unabhängig vom Destruktor bei Bedarf durchführt. Einen Destruktor in C# erstellt man, in dem man eine Methode mit dem Namen der Klasse, aber einem vorangstellten ~ erzeugt. Aufgrund der Automatischen Speicherverwaltung ist aber nicht sicher, wann der Destruktor aufgerufen wird, da der Speichermanager der .NET-Umgebung dies Eigenständig entscheidet. Gruß Torsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz