c# und häufiges new
-
Hupf schrieb:
Maxi schrieb:
Point3D ist auch eine Klasse, kein struct oder enum, also liegt sie nciht auf dem stack, oder?
Nein, Objekte werden auf dem Heap angelegt! Die Referenz auf das angelegte Objekt, die du erhälst, wird auf dem Stack gespeichert!
Grüße
Value types werden auch direct auf dem Stack angelegt.
-
Jenna J. schrieb:
Maxi schrieb:
In c++ würde einfach ein Objekt auf dem Stack liegen und nach dem Funktionsaufruf ist es wieder freigegeben, in C# ja nicht.
Selbst in C++ würde ich die Variable hier vor der Schleife erstellen, denn unabhängig von Garbage Collector oder sonstiger Speicherverwaltung sind es einfach weniger Schritte:
for (int i = 0; i < 10; i++) { int x = 5; cout << x; }
-->
int x = 5
cout << x;
int x = 5
cout << x;
int x = 5
cout << x;
int x = 5
cout << x;
int x = 5
cout << x;
int x = 5
cout << x;
int x = 5
cout << x;
int x = 5
cout << x;
int x = 5
cout << x;
int x = 5
cout << x;int x = 5; for (int i = 0; i < 10; i++) { cout << x; }
-->
int x = 5;
cout << x;
cout << x;
cout << x;
cout << x;
cout << x;
cout << x;
cout << x;
cout << x;
cout << x;
cout << x;Jeder vernünftige Compiler optimiert dir das, so dass beide Varianten genau gleich schnell sind.
Variablen immer "so lokal wie möglich", also in diesem Fall innerhalb der Schleife, nicht davor. Warum? Weil's übersichtlicher ist!
-
hustbaer schrieb:
Variablen immer "so lokal wie möglich", also in diesem Fall innerhalb der Schleife, nicht davor. Warum? Weil's übersichtlicher ist!
Woher soll ich das auch so genau wissen? Ich komme schließlich aus einer anderen Branche.
-
J. Jameson schrieb:
hustbaer schrieb:
Variablen immer "so lokal wie möglich", also in diesem Fall innerhalb der Schleife, nicht davor. Warum? Weil's übersichtlicher ist!
Woher soll ich das auch so genau wissen? Ich komme schließlich aus einer anderen Branche.
Das ist auch keine absolute Wahrheit, sondern meine Meinung
Davon abgesehen: jetzt weisst dus ja. Ist ja nix passiert...
-
Value types werden auch direct auf dem Stack angelegt.
wie sind die denn unterscheidbar?? blau-> stack -> grün ->heap ??? seh ich das richtig^;)
-
BorisDieKlinge schrieb:
Value types werden auch direct auf dem Stack angelegt.
wie sind die denn unterscheidbar?? blau-> stack -> grün ->heap ??? seh ich das richtig^;)
Nein.
-
Nämlich structs->stack, Klassen->Heap
-
BorisDieKlinge schrieb:
Value types werden auch direct auf dem Stack angelegt.
wie sind die denn unterscheidbar?? blau-> stack -> grün ->heap ??? seh ich das richtig^;)
nach den farben kann man nicht gehen
zb ist
"string" blaub aber
"String" ist gruen
intern "zeigt" "string" aber auf "String" - ist also ein und das selbe objekt
es wird nur "als datentyp" wie int oder double angezeigt(int = Int32, short = Int16, long = Int64 usw usf)
-
BorisDieKlinge schrieb:
Value types werden auch direct auf dem Stack angelegt.
wie sind die denn unterscheidbar?? blau-> stack -> grün ->heap ??? seh ich das richtig^;)
Und wieder die Anleitung:
1. www.google.de
2. Suchbegriff C# value types
3. Erster link: http://msdn.microsoft.com/en-us/library/s1ax56ch.aspxPS. MSDN really is your friend.
PSS: Man sollte meinen das Du es langsam mal lernst die C# Referenz zu benutzen.
-
PSS: Man sollte meinen das Du es langsam mal lernst die C# Referenz zu benutzen.
ersetze das langsam mal durch nie