C#中的值类型与引用类型

一、值类型:int    double    char    decimal    bool    enum    struct

二、引用类型:string    数组    自定义    集合     object    接口

三、值传递和引用传递

值类型在复制的时候,传递的是这个值的本身

int n1 = 10;
            int n2 = n1;
            n2 = 20;
            Console.WriteLine(n1);
            Console.WriteLine(n2);

输出:

10

20

引用类型在复制的时候,传递的是对这个对象的引用

class Program
    {
        static void Main(string[] args)
        {
            Person p1 = new Person();
            p1.Name = "张三";
            Person p2 = p1;
            p2.Name = "李四";
            Console.WriteLine(p1.Name);
            Console.WriteLine(p2.Name);
            Console.ReadKey();
        }
    }
    public class Person
    {
        private string _name;

        public string Name
        {
            get
            {
                return _name;
            }

            set
            {
                _name = value;
            }
        }
    }

输出:

李四

李四

四、原因解释

值类型是存储在栈中的,而引用类型是存储在堆中;值类型在传递的时候,传递的是值的本身,而引用类型则是传递多的是地址

C#中的值类型与引用类型

Rerson p2=p1;传递的仅仅是地址,p1与p2指向的是堆中的同一块存储单元,所以无论是p1的值还是p2的值发生改变,两者的值都会发生改变;

五、引用中的特殊例子,string类型

由于string类型具有唯一不变性;所以它的传递与值类型的相同;

string s = "abc";
            string s2 = s;
            s = "jc";
            Console.WriteLine(s);
            Console.WriteLine(s2);

输出:

jc

abc

 

上一篇:20191218 实验二《Python程序设计》实验报告


下一篇:20193131 2020-2021-2 《Python程序设计》实验二 报告