Day2 01 引用类型和值类型
值类型:值类型变量,存储的是对象的值。给其赋值,会创建值的副本,修改任何一个副本,不会影响其他副本。
int x = 5;
int y = x; //创建一个x的副本y x把其自身的值传送给了y 也就是5
int z = x; //创建一个x的副本z
y ++;
z++;
得到的结果应该是:x = 5;y = 6; z = 6;
引用类型:引用类型变量,存储对象的内存地址,赋值不会创建值的副本,只会创建地址的副本,修改任何一个副本,也同时修改其他的副namespace 引用类型和值类型
说白了,这东西就跟电脑复制粘贴和创建快捷方式类似。你把D盘的av拷贝到了桌面,然后看,这过程中,你删了,或者怎么了,不影响D盘里的源文件。如果你把快捷方式发送到了桌面,改了,就直接把源文件改了。
值类型,开辟了新的内存空间,空间里存的是值。int i ,int j ,int k都有自己的内存空间,里面存的都是自己的值,改了也互不影响。
引用类型,就是人家把自己的内存地址给你了,你改,就把人家的值改了。
例子:
{
class Program
{
static void Main(string[] args)
{
int[] arrayDarwen = new int[] { 1, 2, 3, 4, 5, 6, 7 }; //定义一个int类型的数组arrayDarwen
int[] arrayDarwen1 = arrayDarwen; //注意:没有用new关键字 把arrayDarwen的地址 给了arrayDarwen1 相当于把arrayDarwen的 门牌号给了它。类似指针。
for (int i = 0; i < arrayDarwen.Length; i++) //改变arrayDarwen的值
{
arrayDarwen1[i] += 1;
}
ShowArray(arrayDarwen); //发现 arrayDarwen的值也变化了
Console.WriteLine();
ShowArray(arrayDarwen1);
Console.ReadKey();
}
public static void ShowArray(int[] j)
{
for (int i = 0; i < j.Length; i++)
{
Console.Write(j[i]+",");
}
}
}
}
Day2 01 引用类型和值类型的更多相关文章
- C# 引用类型和值类型
C# 引用类型和值类型 CLR支持两种类型:引用类型和值类型. 1.引用类型 (1)内存必须从托管堆上分配: (2)堆上分配的每个对象都有一些额外成员(包括“类型对象指针”,“同步块索引”),这些成员 ...
- NET基础(4):引用类型和值类型
CLR支持两种类型:引用类型和值类型.虽然FCL的大多数类型都是引用类型,但程序员用的最多的还是引用类型,引用类型总是从托管堆分配,c#的new操作符返回对象内存地址-即指向对象数据的内存地址.使用引 ...
- 《CLR via C#》读书笔记--基元类型、引用类型和值类型
编程语言的基元类型 编译器直接支持的数据类型称为基元类型.基元类型直接映射到Framework类库中存在的类型.例如:C#中的int直接映射到System.Int32类型.下表给出了C#基元类型与对应 ...
- CLR via C#(02)-基元类型、引用类型、值类型
http://www.cnblogs.com/qq0827/p/3281150.html 一. 基元类型 编译器能够直接支持的数据类型叫做基元类型.例如int, string等.基元类型和.NET框架 ...
- 《CLR via C#》读书笔记(5)基元类型、引用类型和值类型
5.1 基元类型 编译器直接支持的数据类型称为基元类型(primitive type). 以下4行到吗生成完全相同的IL int a = 0; //最方便的语法 System.Int32 b = 0; ...
- 【CLR Via C#】第5章 基元类型、引用类型、值类型
第二遍看这本书,决定记录一下加深印象. 1,基元类型 什么事基元类型?基元类型是直接映射到FrameWork类库(FCL)中存在的类型,编译器直接支持的数据类型.比如int直接映射到System.In ...
- CLR via C#深解笔记三 - 基元类型、引用类型和值类型 | 类型和成员基础 | 常量和字段
编程语言的基元类型 某些数据类型如此常用,以至于许多编译器允许代码以简化的语法来操纵它们. System.Int32 a = new System.Int32(); // a = 0 a = 1 ...
- 【C#进阶系列】05 基元类型、引用类型和值类型
基元类型和FCL类型 FCL类型就是指Int32这种类型,这是CLR支持的类型. 而基元类型就是指int这种类型,这是C#编译器支持的,实际上在编译后,还是会被转为Int32类型. 而且学过C的朋友 ...
- 实际举例C#引用类型和值类型的区别<网摘>
我们都知道,c#的两大数据类型分别为值类型和引用类型.很多人或许闭着眼睛都能说出值类型包括简单类型.结构体类型和枚举类型,引用类型包括自定义类.数组.接口.委托等,但是当被问及到二者之间的联系和区别, ...
随机推荐
- Python模块unittest
Python自带一个单元测试框架,unittest模块,用它来做单元测试,它里面封装好了一些校验返回结果的方法和一些用例执行前的初始化操作 在说unittest之前,先说几个概念: TestCase: ...
- python day1-requests
一.什么是requests Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库. 相对于urllib库(自带,无需手动安装)而言, ...
- UESTC-1059 秋实大哥与小朋友(离散化+线段树)
秋实大哥与小朋友 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...
- Consul服务发现在windows下简单使用
目录 基本介绍: 服务连接: 客户端: 系列章节: 回到顶部 基本介绍: 安装: 下载地址:https://www.consul.io/downloads.html 运行: consul agent ...
- pL/Sql插入语句时报错,对表空间没有权限 对表空间 'USERS' 无权限
进入dba为其授予权限:sqlplus sys/admin as sysdba; 为用户授予权限即可 grant unlimited tablespace to username;
- nginx在windows下配置反向代理
转自:https://blog.csdn.net/comeonyangzi/article/details/72466310 下载地址:http://nginx.org/download/ 下载后直接 ...
- MOVE - 重定位一个游标
SYNOPSIS MOVE [ direction { FROM | IN } ] cursorname DESCRIPTION 描述 MOVE 在不检索数据的情况下重新定位一个游标. MOVE AL ...
- python并发编程中的多进程(代码实现)
一.multipricessing模块的介绍 python中的多线程无法利用多核优势,如果想要充分的使用多核CPU资源,在python中大部分情况下需要用多线程,python提供了multiproce ...
- 笔记42 Spring Web Flow——Demo(2)
转自:https://www.cnblogs.com/lyj-gyq/p/9117339.html 为了更好的理解披萨订购应用,再做一个小的Demo. 一.Spring Web Flow 2.0新特性 ...
- php 强制类型转换
123 123.01 array("123",123) true false null (string) "123" "123.01" ...