• 值类型与引用类型


         C#中一个参数的类型有值类型与引用类型,像int、bool、double、decimal、char、struct、enum等是属于值类型,而像string、自定义类、数组等是属于引用类型

         (1)值类型继承自System.valueType,而引用类型继承自System.Object。

         (2)值类型的长度是固定的,引用类型的长度是可变的,并且值类型的值不能为null,如果要将值类型的值赋值为null,就要将值类型定义为可空的类型  int? a=null;

         (3)在储上值类型存储在栈中,而引用引用类型存储在堆中,引用类型同样在栈中开辟了空间,用来存放指向堆中的地址

          

    //定义一个Person类
    public class Person
    {
    public string Name{get;set;}
    public int Age{get;set;}
    }
    public void Fun()
    {
    Person p=new person();
    p.name="11";
    
    Person p1=p;//把p在栈中开辟的地址复制给p1,这样p1就指向p在堆中开辟的空间
    p1.name="22";
    console.writeline(p.name)//输出的结果是"22";
    };
    Person p1=p是把p在栈中开辟的地址假设为0x0001,这个地址指向的是p在堆中开辟的一块空间,赋值给了p1,这样p1的地址也就为0x0001,这样p1就指向了0x0001这个地址指向的空间

          而引用类型中string作为一个特殊的存在,具有不可变性的特点

    string str1 = "aa!";
    string str2 = "bb";
    string str3 = str2;
    Console.WriteLine("{0} {1} {2}", str1, str2,str3);

    //输出的结果是  aa bb bb

  • 相关阅读:
    swf上传地址
    Nape 获取碰撞点加特效
    vbs打包exe工具
    Air打包exe
    JDK12的安装搭建
    Dubble 入门
    FastDFS 集群
    PAT Advanced 1077 Kuchiguse (20 分)
    高可用4层lvs——keepalived
    PAT Advanced 1035 Password (20 分)
  • 原文地址:https://www.cnblogs.com/Opiece/p/4657922.html
Copyright © 2020-2023  润新知