C# struct & class Differences

作者:袖梨 2022-07-02
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 to? 
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 would not work since you can only lock on a reference type expression. 

相关文章

精彩推荐