Net Core教程

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

本文主要是介绍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;
            }
        }
    }

输出:

李四

李四

四、原因解释

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

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

 

这篇关于C#中的值类型与引用类型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!