c#基础-类型基础深入了解
对象类型需要动态内存,基础类型需要静态内存
动态内存分配在堆上,静态内存分配在栈上。
静态内存保存着简单的变量,如 int a=0;
值类型:把一个值类型赋值给另外一个值类型,改变其中一个另外一个不会受影响
引用类型:因为是引用,所以改变会互相影响
c#装箱 值转引用类型 把值类型的数据给储存到引用类型的堆上
什么是装箱:装箱其实就是可以说是隐式转换
值类型 int i=1;
引用类型 object value =1 ; value(ref(引用了 i=1))装箱
值类型 int b =(int )value;拆箱
自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型转换。 转换规则为: 从存储范围小的类型到存储范围大的类型。 例如:我有一个箱子(内存空间)一把钥匙(引用),我有个东西(int i),本来可以直接拿走,但是因为 这样: public class a(){ int i=1;值类型} public void s( int Id){ class b=new class();装箱,拆箱 id=b.i;} 我又是那一不小心撞到箱子里面,还得拿钥匙开,人都会嫌烦,何况程序呢,这就是性能损耗
C#拆箱;隐转值 把储存到引用类型堆上的值储存到局部变量整形中
什么是隐式转换:程序会自动给你转换好
什么是显示转换: 强制转换==显示转换:在程序需要一个类型的时候,你给我另外一种类型,噶怎么办,
例如:我需要吃西瓜,你给我冬瓜,怎么办,强行使用魔法(程序代码)把你冬瓜变成西瓜
值类型:只需要一段单独的内存,
引用类型:需要两端
存储引用类型对象的成员
假设有一个引用类型的实例,
引用类型有两个成员,一个值类型A 一个引用类型B
值放栈里面,那么B的引用是放在堆,值放在栈里面?
当然不是, 对于引用类型的任何对象,它的所有数据
成员都放在栈里面,无论是值还是栈
预定义值类型:sbyte byte float short ushort double int uint char long ulong decimal bool
用户自定义值类型:struct结构 enun
预定义引用类型:object string dynamic
用户自定义值类型:class类 interface接口 delegate委托 array数据
c#基础-类型基础深入了解的更多相关文章
- Java基础(2)-基础类型
java基础类型 基础类型 package knowledge.base; public class Properties { /** * 整型 * int 4字节 -2 147 483 648 ~2 ...
- salesforce 零基础学习(五十八)通过sObject的field返回其对应的基础类型
项目中有时候会要求通过sObject的Field的type类型返回其对应的基本类型,然后对其进行相关的处理,创建sObject的field可以选择的type类型是固定多的. 上述类型可以转换成几种基本 ...
- TypeScript 素描-基础类型
博文读自 TypeScript 官方文档而来,不具有学习性,仅是本人学习时记录以供日后翻阅 ,有学习TypeScript的朋友还请去看更为详细的官方文档 TypeScript官网文档中的基础类型, T ...
- Typescript基础类型
1.布尔值__boolean 2.数字__number----除了支持十进制和十六进制字面量,Typescript还支持ECMAScript 2015中引入的二进制和八进制字面量. 3.字符串__st ...
- 玩转JavaScript OOP[0]——基础类型
前言 long long ago,大家普遍地认为JavaScript就是做一些网页特效的.处理一些事件的.我身边有一些老顽固的.NET程序员仍然停留在这种认知上,他们觉得没有后端开发肯定是构建不了系统 ...
- 【Go入门教程2】内置基础类型(Boolean、数值、字符串、错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值
这小节我们将要介绍如何定义变量.常量.Go内置类型以及Go程序设计中的一些技巧. 定义变量 Go语言里面定义变量有多种方式. 使用var关键字是Go最基本的定义变量方式,与C语言不同的是Go把变量类型 ...
- Java基础类型总结
最近一直在总结反思自己, 趁着现在请假在学校上课的空余时间,从基础开始重新温故学习下Java,充实下自己. 一.数据类型 从下图中,我们可以很清晰的看出Java中的类型,其中红色方框中的是Java的4 ...
- Java基础类型与其二进制表示
Java中的基础类型有:byte.short.int.long.float.double.char和boolean. 它们可被分为四种类型,整型.浮点型.char型和boolean型. 整型:byte ...
- java基础-基础类型包装类型
想要对基本类型数据进行更多的操作,最方便的方式就是将其封装成对象. 为啥呢?因为在对象描述中就可以定义更多的属性和行为对该基本数据类型进行操作. [八种基本数据类型的包装类] byte --Byte ...
随机推荐
- 【转】精心推荐几款超实用的 CSS 开发工具
原文转自:http://www.html5cn.org/article-5741-1.html 摘要: 当你开发一个网站或 Web 应用程序的时候,有合适的工具,绝对可以帮助您节省大量的时间.在这篇文 ...
- [20150513]Linux远程登陆管理以及Vim的学习
Linux远程登陆管理以及Vim的学习 实现Linux远程管理 所需工具Xshell,Xshell是一个用于MS Windows平台的强大的SSH,TELNET,和RLOGIN终端仿真软件.它使得用户 ...
- html5本地存储的解决
1.解决了Cookie 4K存储大小的问题2.解决了请求头常带存储信息的问题3.解决了关系型存储的问题4.跨域问题,跨浏览器*在 HTML5 中,数据不是由每个服务器请求传递的,而是只有在请求时使用 ...
- JavaSE坦克网络版
02.1.建立Server(保持这个TankServer一直运行) package server; public class TankServer { public static void main( ...
- android视频播放器开发
http://blog.csdn.net/u010181592/article/details/49301703 http://blog.csdn.net/qq_33291295/article/de ...
- git相关
进入到想要用git管理的project目录下 1.git init 意即该目录会被git监视一切的变动 同时生成一个.git文件夹下面存放了管理该project的一切必要信息 2.git add &l ...
- Sea.js学习5——Sea.js的构建工具spm
如果项目遵循推荐的标准目录结构: foo-module/ |-- dist 存放构建好的文件 |-- src 存放 js.css 等源码 | |-- foo.js | `-- style.css `- ...
- [转]MYSQL远程登录权限设置
Mysql默认关闭远程登录权限,如下操作允许用户在任意地点登录: 1. 进入mysql,GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED B ...
- 为重负网络优化 Nginx 和 Node.js --引用自https://linux.cn/article-1314-1.html
为重负网络优化 Nginx 和 Node.js 在搭建高吞吐量web应用这个议题上,NginX和Node.js可谓是天生一对.他们都是基于事件驱动模型而设计,可以轻易突破Apache等传统web服务器 ...
- SpringMVC学习系列(7) 之 格式化显示
在系列(6)中我们介绍了如何验证提交的数据的正确性,当数据验证通过后就会被我们保存起来.保存的数据会用于以后的展示,这才是保存的价值.那么在展示的时候如何按照要求显示?(比如:小数保留一定的位数,日期 ...