转换-值类型-引用类型-预定义分类表

转换

C#里,兼容的实例间可以进行相互转换

转换总是从一个值转换成一个新的值

隐式转换:隐式转换是自动发生的

显式转换:显式转换是手动操作的

长整型转换成整型的时候可能会导致数据丢失,所以要用显示转换

如果编译器断定转换不能成功的化两种转换都是会被禁止的

static void Main(string[] args){int i = 3;long a = i;//因为int是整型,long是长整型,已经包括了int的情况下直接隐式转换short b = (short)i;//由于short比long的范围小,所以i前面需要指定short,显示转换}

值类型和引用类型

值类型包含了所有的内置类型:数值,字符,bool,自定义的结构体struct,枚举neum

引用类型包括所有的class,数组,委托delegate,接口interface,string字符串。

两种的根本区别在于处理内存的方式

这个是值类型的结构图

用public struct 创建一个自定义的值类型,类型名point

创一个新的p1点,赋值,赋值又赋值给p2,在这个内存里发生了复制,此时打印都是7

再重新赋值给p1,赋值的地址与复制的内存地址不同了,所以p2也不会再发生变化了

引用类型赋值:给引用类型的变量赋值,复制引用,而不是复制实例

所以这种情况下允许多个变量引用同一个对象,值类型就不行。

static void Main(){ Ask p1 = new Ask();p1.x = 9;Ask p2 = p1;//p2=9,复制了p1的引用,p1.x = 10;//此时改变了p1对象的值,然后p2也是同一个对象System.Console.WriteLine(p2.x);//所以这里p2也等于10}
public class Ask{public int x;public int y;}

这个是引用类型的结构图

null

可以把null赋值给引用,表示引用不指向任何一个对象

 Ask p = null;System.Console.WriteLine(p == null);

普通的值类型不可以为null,编译不通过

值类型:

意思就是用的类型最大存储为多少,它占用的就为多少

引用类型:

内置类型分类

特殊例子:

string虽然是引用类型,但是string具有不可变性

例子:

            string s1 = "张三";string s2 = s1;s2 = "李四";Console.WriteLine(s1)Console.WriteLine(s2);

结果:s1=张三 s2=李四  string虽然为引用类型,但是string具有不可变性

C#值类型-引用类型相关推荐

  1. 变量/值类型/引用类型/常量/枚举

    变量 声明语法 datatype identifier; 如:int i; //声明一个int类型的变量,但是在没有初始化之前编译器不允许使用该变量 同时声明多个 int a,b;//同时声明两个in ...

  2. javascript基本数据类型与值类型引用类型说明

    DEMO: http://sources.ikeepstudying.com/jsdata/ 摘要:本文主要讲了javascript中的基本数据类型,以及值类型和引用类型的区别与使用 一.基本数据类型 ...

  3. 关于C#值类型,引用类型,值传递,引用传递

    说到参数传递,必须得弄清值类型和引用类型: (为了容易表达,我暂且命名存放在堆中的内容为堆中对象,存放在栈上的内容为栈中对象.) 值类型存放在栈中,直接访问.如果有:int a=0;int b=a;就 ...

  4. C#基础_值类型引用类型(十一)

    值类型和引用类型: 值类型包括:byte,short,int,long,char,float,double,bool,struct结构 引用类型包括:类类型,接口类型和数组 等. 值类型和引用类型特点 ...

  5. 值类型 引用类型 堆栈 堆 之 异想

    看了很多值类型 和 引用类型的文章(谷歌能搜索出来的) 看了越多疑问越大,而这些资料中没有具体的说明. 问题: 1.堆栈 和 堆 分别存于计算机的哪个硬件(CPU缓存,内存,硬盘)? 2.为什么只有值 ...

  6. 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱

    引言 本篇文章主要介绍.NET中6个重要的概念:栈,堆,值类型,引用类型,装箱,拆箱.文章开始介绍当你声明一个变量时,编译器内部发生了什么,然后介绍两个重要的概念:栈和堆:最后介绍值类型和引用类型,并 ...

  7. C# 值类型 引用类型 作为参数传递区别

    C#数据类型分类: http://msdn.microsoft.com/zh-cn/library/t63sy5hs(v=VS.80).aspx. 值类型作为参数传递: http://msdn.mic ...

  8. iOS开发-Swift进阶之值类型 引用类型!

    本文主要介绍为什么结构体是值类型,类是引用类型 值类型 图片看不了请前往简书 前提:需要了解内存五大区,,如下所示 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XFI ...

  9. 栈,堆,值类型,引用类型,装箱,拆箱 .NET中 6个重要的概念

    == 转载于:https://www.cnblogs.com/xiao-hei/p/3847525.html

最新文章

  1. 计算机一直在启动修复怎么关机,电脑开机一直要启动修复,自动修复好久开不了机,然后进去系统恢复选?...
  2. python:PATH、PYTHONPATH 和 sys.path 的区别
  3. c语言实现python列表_C语言实现的Python扩展模块
  4. mysql报错无效默认值1067_Mysql 报错:#1067 - Invalid default value for 'update_time
  5. 一系列图论问题[转]
  6. Packt和Java Code Geeks提供的$ 5 Java编程书籍!
  7. linux 内核配置过程中遇到的问题
  8. Python基础入门_5面向对象基础
  9. poj 1715 Hexadecimal Numbers 排列组合
  10. 简单的11步在Laravel中实现测试驱动开发
  11. [转载] python中随机数生成函数_python中seed随机函数如何生成随机数?
  12. 计算机系统组成 教案,计算机系统组成教学设计.doc
  13. 超简单!用 Python 为图片和 PDF 去掉水印
  14. Top命令查询结果界面参数详解
  15. TypeError: slice indices must be integers 数组索引必须是整数
  16. tp5+mysql写入特殊表情符号数据时失败
  17. 计算机组成原理之基本组成
  18. uCore OS(on RISC-V64)——LAB1:中断机制
  19. H.266/VVC的编码结构和块划分
  20. py学习9——linux常见指令

热门文章

  1. 蓝牙耳机超长续航哪个牌子好?超长待机蓝牙耳机排行榜
  2. 从Azure命令行流式传输诊断跟踪日志(以及Glimpse!)
  3. 如何批量新建txt并命名?
  4. 如何让一张PPT中多张图片顺序播放?
  5. JVM Eden空间,From Survivor空间,To Survivor空间
  6. Java并发13:并发三特性-原子性定义、原子性问题与原子性保证技术
  7. 树莓派连接手机热点,电脑连接手机热点,电脑通过ssh连接树莓派的方法
  8. airpods替代产品推荐,像airpods一样的耳机点评!
  9. Python进阶篇:MySQL隔离级别详解
  10. Python opencv学习-2读取视频,存视频,设置视频大小