值类型和引用类型

值类型:int double char bool decimal struct enum

引用类型:string array class interface delegate

值类型的值存储在内存的栈上,引用类型的值存储在堆中,栈上存储数据的效率要高于堆

不管形参还是实参,在内存中都是开辟了空间的

值传递:把值类型做为参数传递,把值本身进行传递

  注意:

  ref可以把值传递改变为引用传递

引用传递:把引用类型的值作为参数传递,传递的是引用

值类型均隐式派生自System.ValueType

引用类型派生自System.Object

class Program
    {
        static void Main(string[] args)
        {
            Person person1 = new Person();
            person1.Name = "张三";
            Test(person1);
            Console.WriteLine(person1.Name);
            Console.ReadKey();

        }
        static void Test(Person p)
        {
            p.Name = "李四";
            Person person2 = new Person();
            person2.Name = "王五";
            p = person2;
        }
    }
    class Person
    {
        public string Name { get; set; }
    }

猜一下结果是什么呢

没错,答案就是李四。

这是为什么呢

原文地址:https://www.cnblogs.com/xiaonangua/p/7284161.html