zoukankan      html  css  js  c++  java
  • C#基础_值类型引用类型(十一)

    值类型和引用类型:

      值类型包括:byte,short,int,long,char,float,double,bool,struct结构

      引用类型包括:类类型,接口类型和数组 等。

    值类型和引用类型特点:

      1.值类型的变量保存的是原始值,即它代表的值本身。

         引用类型变量保存的是引用值, 引用值:指向内存空间的地址,代表某个对象的引用,而不是对象本身,对象本身保存在这个引用值所表示的地址位置。

      2.值类型不管是否赋值都会在栈内存中开内存。

        引用类型当声明一个变量,在栈中分配一个内存存放地址,而此时并没有为其分配堆上的内存空间。当使用new创建一个对象实例的时候,分配堆上的空间,并且把堆上的地址值传给引用,赋值给栈中开的空间。


    值传递 和引用传递:

      1.基本数据类型传值,对形式参数修改不会影响实参;

      2.引用类型传引用,形式参数和实际参数指向同一个地址(同一个对象,同一块堆内存空间),所以对实际参数的修改会影响到实际参数的对象。

      3.string ,Integer, Double等是特殊类型处理,虽然是引用类型,但是也是按照值类型的情况传递,结果不会修改实际参数。

     1         static void Main(string[] args)
     2         {
     3             int num1 = 10;
     4             int num2 = 20;
     5             Console.WriteLine("num1:{0}-------num2{1}",num1,num2);
     6             Change(num1, num2);
     7             Console.WriteLine("num1:{0}-------num2{1}", num1, num2);
     8             //两次输出结果一样
     9         }
    10 
    11         static void Change(int a, int b)
    12         {
    13             Console.WriteLine("a = {0}, b= {1}",a,b);
    14             int temp = a;
    15             a = b;
    16             b = temp;
    17             Console.WriteLine("a = {0}, b= {1}", a, b);
    18         }

    画图演示:


    引用传递示例:

     1   class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             Person p;
     6             p = new Person();
     7             p.name = "赵云";
     8             Console.WriteLine(p.name);
     9             Test(p);
    10             Console.WriteLine(p.name);  //输出结果岳飞
    11 
    12         }
    13 
    14         static void Test(Person p)
    15         {
    16             p.name = "岳飞";
    17         }
    18     }
    19     //只写一个字段做示例
    20     class Person
    21     {
    22         public string name;
    23     }

     画图可能有点乱,如果有不清楚的地方,留言

  • 相关阅读:
    纷享销客公司产品能力学习笔记
    有质量的两道面试题
    java项目启动时执行指定方法
    css银行卡号样式
    swiper6使用鼠标滚轮失效退回swiper4即可
    vue-swiper Demo
    vue点击下载图片
    跨域请求发送数据在body里,java后台接收
    跨域,跨服务session获取不到,前后台不会传输Cookie,sessionId不一致
    Windows下 redis命令及配置
  • 原文地址:https://www.cnblogs.com/CeasarH/p/9165351.html
Copyright © 2011-2022 走看看