2.C# 值类型与引用类型

值类型

值类型的变量直接存储数据。

值类型:byte,sbyte,short,ushort,int,long,float,double,decimal,char,bool,struct,enum

值类型变量声明后,不管是否已经赋值,编译器都会为其分配内存。

C#中的所有值类型均隐式派生自System.ValueType,而System.ValueType继承自System.Object

值类型是堆栈分配,或者分配结构中的内联。

每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。

所有值类型都是密封的,无法派生出新的值类型。


引用类型

引用类型的变量持有的是数据的引用,数据存储在数据堆中。

引用类型:string,class,object,interface,delegate,数组

一般引用类型直接继承于System.Object

当声明一个类时,只在栈中分配一小片内存用于容纳一个地址,而此时并没有为其分配堆上的内存空间。

当使用new创建一个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的小片空间中。

引用类型可以派生出新的类型;值类型不行呦。

引用类型可以包含null值;值类型不行(可空类型功能允许讲null赋值给值类型)。

引用类型变量的赋值只是复制对对象的引用,而不复制对象本身;而将一个值类型变量赋值给另一个值类型变量时,将复制包含的值。

注意:所有的数据类型都是对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 《CLR via C#》作者Jeffrey Richter的话来说,“不理解【引用类型】和【值类型】区别的程序员将...
    LH_晴阅读 5,764评论 0 3
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 11,955评论 0 62
  • 值类型 值类型的特性: 1.C#的所有值类型均隐式派生自System.ValueType。 各个值类型及其基类: ...
    天lc呐阅读 3,126评论 0 0
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,161评论 1 51
  • “道可道 ,非常道 。名可名 ,非常名。无 名天地之始 ﹔有名万物之母 。故常无欲以观其妙 ﹔ ……”无青讲道,...
    叶络阅读 1,868评论 0 0

友情链接更多精彩内容