C#: reference type and value type

來源:互聯網
上載者:User

1. Class is reference type while Struct is value type.

2. Referece type data will be allocated on the heap always, while value type data will be either on the stack as local variable for example or on the heap.

3. Referece type holds a reference to the object on the heap, just like holding its address; value type, holds the object directly.

4. Reference types support single-implementation and multiply-interface inheritance. They can derive from another reference type or have a reference type derive from them. However, value types can’t derive from other value types.

5. Finalization is a process that occurs when the CLR is performing garbage collection, cleaning up objects from memory. Value type objects don’t have a finalizer, but reference types
do. A finalizer is a special class member that could be called by the CLR garbage collector during cleanup. Value types are either garbage collected with their containing type or
when the method they are associated with ends. Therefore, value types don’t need a finalizer. Because garbage collection is a process that operates on heap objects, it is possible for
a reference type to have a finalizer.

6. Reference type is just a reference so pass, copy and use it: no worries; while value type, when it's copied, whole data will be copied, which should totally be avoided especially in passing it as parameters in function callings. 

REFERENCE TYPE OR VALUE TYPE: WHICH TO CHOOSE?
As a rule of thumb, I typically create new types as classes, reference types. The exception is when I have a type that should behave more like a value type. For example, a
ComplexNumber would probably be better as a struct value type, because of its memory allocation, assignment behavior, and other capabilities such as math operations that
are similar to built-in value types such as int and double.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.