值类型:值类型变量,存储的是对象的值。给其赋值,会创建值的副本,修改任何一个副本,不会影响其他副本。

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 引用类型和值类型的更多相关文章

  1. C# 引用类型和值类型

    C# 引用类型和值类型 CLR支持两种类型:引用类型和值类型. 1.引用类型 (1)内存必须从托管堆上分配: (2)堆上分配的每个对象都有一些额外成员(包括“类型对象指针”,“同步块索引”),这些成员 ...

  2. NET基础(4):引用类型和值类型

    CLR支持两种类型:引用类型和值类型.虽然FCL的大多数类型都是引用类型,但程序员用的最多的还是引用类型,引用类型总是从托管堆分配,c#的new操作符返回对象内存地址-即指向对象数据的内存地址.使用引 ...

  3. 《CLR via C#》读书笔记--基元类型、引用类型和值类型

    编程语言的基元类型 编译器直接支持的数据类型称为基元类型.基元类型直接映射到Framework类库中存在的类型.例如:C#中的int直接映射到System.Int32类型.下表给出了C#基元类型与对应 ...

  4. CLR via C#(02)-基元类型、引用类型、值类型

    http://www.cnblogs.com/qq0827/p/3281150.html 一. 基元类型 编译器能够直接支持的数据类型叫做基元类型.例如int, string等.基元类型和.NET框架 ...

  5. 《CLR via C#》读书笔记(5)基元类型、引用类型和值类型

    5.1 基元类型 编译器直接支持的数据类型称为基元类型(primitive type). 以下4行到吗生成完全相同的IL int a = 0; //最方便的语法 System.Int32 b = 0; ...

  6. 【CLR Via C#】第5章 基元类型、引用类型、值类型

    第二遍看这本书,决定记录一下加深印象. 1,基元类型 什么事基元类型?基元类型是直接映射到FrameWork类库(FCL)中存在的类型,编译器直接支持的数据类型.比如int直接映射到System.In ...

  7. CLR via C#深解笔记三 - 基元类型、引用类型和值类型 | 类型和成员基础 | 常量和字段

    编程语言的基元类型   某些数据类型如此常用,以至于许多编译器允许代码以简化的语法来操纵它们. System.Int32 a = new System.Int32();  // a = 0 a = 1 ...

  8. 【C#进阶系列】05 基元类型、引用类型和值类型

     基元类型和FCL类型 FCL类型就是指Int32这种类型,这是CLR支持的类型. 而基元类型就是指int这种类型,这是C#编译器支持的,实际上在编译后,还是会被转为Int32类型. 而且学过C的朋友 ...

  9. 实际举例C#引用类型和值类型的区别<网摘>

    我们都知道,c#的两大数据类型分别为值类型和引用类型.很多人或许闭着眼睛都能说出值类型包括简单类型.结构体类型和枚举类型,引用类型包括自定义类.数组.接口.委托等,但是当被问及到二者之间的联系和区别, ...

随机推荐

  1. PHP MVC结构系统架构设计

    今天研究了下PHP MVC结构,所以决定自己写个简单的MVC,以待以后有空再丰富.至于什么MVC结构,其实就是三个Model,Contraller,View单词的简称,,Model,主要任务就是把数据 ...

  2. 剑指offer-树的子结构-python

    题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构)     思路 空树不是任意一个树的子结构,如果 root1 与root2 中有一个为空树的话,返回 ...

  3. git LF will be replaced by CRLF in hellogit.txt

    这个是换行符的问题 参见:https://blog.csdn.net/starry_night9280/article/details/53207928

  4. 简单的物流项目实战,WPF的MVVM设计模式(二)

    往Models文件添加一个类,ConnectObject         /// <summary>        /// 链接数据库字符串        /// </summary ...

  5. MySQl查询语句大全

    综合使用 查询 目录: #----综合使用 书写顺序 select distinct * from '表名' where '限制条件' group by '分组依据' having '过滤条件' or ...

  6. 划水日记之大哥带我走渗透I

    5/24/19 周五 access注入 先测试是否有漏洞 or nor and 1=1 and 1=2 2. Order by 猜字表端,发现一共有22个 3..然后使用 union select 1 ...

  7. python之模块导入和包

    一.何为模块 1.一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 2.模块目的和函数,对象等一样,是为了代码的复用性而存在的.即一个py程序写了很多功能,也可 ...

  8. .net Core——SqlSugar使用

    一.DbContext配置 public class DbContext { public DbContext() { Db = new SqlSugarClient(new ConnectionCo ...

  9. Tensorflow fintune

    https://zhuanlan.zhihu.com/p/42183653 tf2.0中有更简单的做法,和keras一样

  10. qt03 QString和QByteArray相互转换

    QString str("hello");   QByteArray bytes = str.toUtf8(); // QString转QByteArray方法1       QS ...