关于C#中 的引用类型需要实例化,值类型不需要实例化的理解
2016-01-18 11:03
429 查看
引用类型需要实例化,值类型不需要实例化。严格来说,这句话是错误的;粗略来讲,是不准确的。
值类型的值就是一个具体对象,不需要创建。
《语言组织中,,,,,,敬请期待》
所以我最终的理解是:C#是完全面向对象的语言,那么在程序代码中,我们看到的每个变量,它都是对象,不管这个变量是值类型的还是引用类型的;变量有变量名和变量值的之分,类有类定义和具体类对象之分;那么变量名就表示某种类型的对象,但是变量名对象的具体值是什么呢,所以引用类型用new关键字在内存堆中创建创建具体的值(类的对象),并且把该具体值在内存堆中的引用赋值给了变量名对象,值类型也要创建一个具体值给变量名对象,值类型创建具体值的过程,可以用new关键字,也可以不用new关键字,原因我认为是值类型的具体值是具体的,是不需要定义的,就像是数学中的公理,不需要证明,就可以用,也像化学中的原子,不可再分,直接把具体值赋值给变量名对象即可。
一句话总结:不管是值类型的变量,还是引用类型的变量,他们都表示对象,他们的具体值都需要创建,只是创建的方式不一样,存储在栈中和存储在堆中的区别。就好像面向过程中说的:变量要先定义,再赋初始值,最后才能使用是一个道理。
值类型的值就是一个具体对象,不需要创建。
《语言组织中,,,,,,敬请期待》
所以我最终的理解是:C#是完全面向对象的语言,那么在程序代码中,我们看到的每个变量,它都是对象,不管这个变量是值类型的还是引用类型的;变量有变量名和变量值的之分,类有类定义和具体类对象之分;那么变量名就表示某种类型的对象,但是变量名对象的具体值是什么呢,所以引用类型用new关键字在内存堆中创建创建具体的值(类的对象),并且把该具体值在内存堆中的引用赋值给了变量名对象,值类型也要创建一个具体值给变量名对象,值类型创建具体值的过程,可以用new关键字,也可以不用new关键字,原因我认为是值类型的具体值是具体的,是不需要定义的,就像是数学中的公理,不需要证明,就可以用,也像化学中的原子,不可再分,直接把具体值赋值给变量名对象即可。
一句话总结:不管是值类型的变量,还是引用类型的变量,他们都表示对象,他们的具体值都需要创建,只是创建的方式不一样,存储在栈中和存储在堆中的区别。就好像面向过程中说的:变量要先定义,再赋初始值,最后才能使用是一个道理。
相关文章推荐
- 什么是C#?什么是.NET Framework?
- C#-生成下面的模块时,启用了优化或没有调试信息:
- C#-解决“在证书存储区中找不到清单签名证书”
- C#除法精度
- C#运算符
- c#实现将Excel文件导出为csv和UTF8格式的txt文件
- 浅谈思路严谨的管理软件中的用户在线状态控制【附部分C#参考代码】
- C#窗体自适应
- C#中的泛型
- C#编写不安全代码初探
- 【C#】简介
- C#灰度图转伪彩色图
- C#下设置TextBox默认显示文字,点击后消失
- 按大小缩放图片
- 跟siki老师学C#第四天(学习部分)
- 设计模式C#实现(十六)——中介者模式
- C#常用字符串处理
- C#获取日期
- c# 复制文件后新的文件变成只读文件
- C#面向对象概念总结