C # struct/class Differences
Struct Direct
{
//...
}
Class InDirect
{
//...
}
Events are locked?
Exist on stack or heap?
Can cause garbage collection?
Meaning of this?
Always has a default constructor?
Default construction triggers static construction?
Can be null?
Use with the as operator?
Can be locked?
Can have a destructor?
Default field layout?
Can be a volatile field?
Can have synchronized methods?
Can be pointed?
Can be stackalloc 'd?
Can be sizeof 'd?
How to initialize fields?
Inheritance differences?
Equals behavior
Events are locked?
Events declared in a class have their + = and-= access automatically locked via a lock (this) to make them thread safe (static events are locked on the typeof the class ). events declared in a struct do not have their + = and-= access automatically locked. A lock (this) for a struct wocould not work since you can only lock on a reference type expression.