zoukankan      html  css  js  c++  java
  • C#: reference type and value type

    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.

  • 相关阅读:
    14.UA池和代理池
    13.scrapy框架的日志等级和请求传参
    12.scrapy框架之递归解析和post请求
    11.scrapy框架持久化存储
    10.scrapy框架简介和基础应用
    09.移动端数据爬取
    08.Python网络爬虫之图片懒加载技术、selenium和PhantomJS
    07.验证码处理
    vi编辑器
    tar 压缩命令
  • 原文地址:https://www.cnblogs.com/taoxu0903/p/1670976.html
Copyright © 2011-2022 走看看