值类型和引用类型

  • 值类型的传递,传递的是值本身,相当于另外拷贝了一份,不会因为指向别的后,改变被传递的值,除非自身改变,则被传递的值才会改变。
  • 引用类型传递,传递的是引用,相当于是一个副本,会随着引用的值的改变而改变。
  •  1 namespace ConsoleApplication2
     2 {
     3     class Program
     4     {
     5         static void Main(string[] args)
     6         {
     7             int i = 10;
     8             int j = i;//值类型,传递的是本身。J=10,不管i怎么变,J取得是i的值10.是固定的了。
     9             int k = 50;
    10             i = k;
    11             Console.WriteLine(j);
    12             //引用类型传递,传递是是引用,而不是值本身,因为一个类的值可能数据很大,很占内存。
    13             Person p1 = new Person();
    14             Person p2 = new Person();
    15             Person p3 = new Person();
    16             p1.Age = 10;
    17             p2 = p1;
    18             p3.Age = 50;
    19             p1 = p3;
    20             //p1指向“p3所指的对象,p2是指向“p1指向的对象new Person(),
    21             //p1和p3是没有关系的,p2也不会指向p3所指向的对象。p2依然指向p1所指向的对象。”。
    22             Console.WriteLine(p2.Age);//10
    23             IncAge(p2);
    24             Console.WriteLine(p2.Age);//11
    25             Console.ReadKey();
    26         }
    27         static void IncAge(Person p)
    28         {
    29             p.Age++;
    30         }
    31     }
    32     class Person
    33     {
    34         private int age;
    35         public int Age
    36         {
    37             set { this.age = value; }
    38             get { return this.age; }
    39         }
    40     }
    41 }
    View Code
原文地址:https://www.cnblogs.com/chuizhuizhigan/p/3214575.html