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(). 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 -
