zoukankan      html  css  js  c++  java
  • class和struct的区别

    C#中很多数据类型都是用struct类型定义的,属于值类型。
    C#定义的class属于引用类型

    具体分析二者的区别,就要提到堆(heap)、栈(stack),栈是一种后进先出的数据结构,是处理器中支持的一块内存区域,存放的是一些局部变量;堆是一块动态分配的内存区域。

    C#中值类型分配在栈中,引用类型则分配到堆中;

    C#中一切都是对象,包括数据类型;前面我们提到C#中的一些数据类型是用struct定义的,struct是从ValueType继承来的,而ValueType是从Object继承来的,所以值类型也是对象。

    C#内存回收器会在栈框架结束后回收栈内存,比如一般栈框架是在方法中定义,那么方法结束后,里面定义的一些变量就会被回收;
    而堆内定义的对象在对象最后一次引用之后才能回收,从这一点上二者有很大的区别。
  • 相关阅读:
    AMQP协议
    设计模式三:行为型模式
    设计模式二:结构型模式
    设计模式一:创建型模式
    算法进阶
    数据结构
    希尔排序、计数排序、桶排序、基数排序
    归并排序
    python Gevent协程
    python——多进程
  • 原文地址:https://www.cnblogs.com/hill/p/534867.html
Copyright © 2011-2022 走看看