On Tue, Dec 16, 2008 at 11:10 AM, rbdavidson <[email protected]> wrote:
> > Well, "value types, not datatypes" is not the only difference between > a struct and a class. > > Structs are allocated off the stack, classes from the heap. Module > level variables in classes can have default values, in structs they > can't and you have to initialize values in the New(). > Can you refresh my memory and explain the difference between the stack and heap? > > Also classes have some code overhead that structs don't which results > in a struct instantiating faster than a class. Not a big deal, unless > you are doing something like > > Dim myStruct(100000000) as SomeStruct > > Vrs > > dim myClass(100000000) as SomeClass > > In which case every millisecond counts and structs have the > advantage. Of course, since structs are value types you can't create > a new struct by inheriting from an existing one. I.e. You can't > create an extensible "struct hierarchy" like you can with classes. > This limits their usefulness to pretty particular cases. > > - RBDavidson > > > > On Dec 15, 3:18 pm, "Brandon Betances" <[email protected]> wrote: > > Also, the only difference between a struct and a class is that a struct > is > > used for value types, not datatypes, System.Int32 for example is a > struct, > > string is a class. > > > > On Mon, Dec 15, 2008 at 4:11 PM, Brandon Betances <[email protected] > >wrote: > > > > > > > > > C# performs garbage collection automatically, but you can call it > > > expilictly with the System.GC.Collect() method. > > > put it where the delete statement is. > > > > > On Mon, Dec 15, 2008 at 3:18 PM, Alon K <[email protected]> wrote: > > > > >> Hi, > > > > >> I remember that in C++ one had to issue the following statement (or > > >> something similar) to clean up memory: > > > > >> delete pNode; > > > > >> and the memory address assigned to pNode will be unassigned. > > >> Is there something like this that needs to be done in C# ? > > > > >> So for example I have: > > > > >> pHold = pIndex; > > >> pIndex = pIndex->pNext; > > >> delete pHold; ????? <-- what can I do here > > > > >> While on the topic, I have been doing the following to create linked > > >> lists in the intermediate step: > > > > >> NODE* pCreate = stackalloc NODE[1]; > > >> pIndex->pNext = pCreate; > > >> pIndex = pCreate; > > > > >> While I haven't programmed in C++ in a while I remember that this > > >> could be done directly in C++: > > > > >> pIndex->(*pNext) = new NODE; > > >> pIndex = pIndex->pNext; > > > > >> Also the code above using stackalloc NODE[1] just feels wrong and as > > >> if I'm using it to do something it wasn't intended to do. Now for the > > >> application it is important to keep the spirit of a linked list and > > >> not an stacked list, meaning I want to be able to move the links > > >> around dynamically. > > > > >> How can I do this correctly, I may not be understanding the > > >> fundamentals of C# (such as how variables are treated). Also NODE is a > > >> struct, which is different from a Class in C# in terms of data from my > > >> understanding. > > > > >> Appreciate your help. > > > > >> -Alon- Hide quoted text - > > > > - Show quoted text - > -- Charles A. Lopez [email protected] Bachelor of Arts - Computer Science New York University Registered Microsoft Partner New York City, NY
