.Net学习笔记----2015-06-28(值类型和引用类型)

值类型:int  double  char  decimal  bool  enum  struck;存在内存的栈里

引用类型: string   数组    自定义类    集合     object    接口;存在堆里

值传递和引用传递:

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

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

.Net学习笔记----2015-06-28(值类型和引用类型)

.Net学习笔记----2015-06-28(值类型和引用类型)

字符串是个特殊:

  字符串由于其不可变性,每次赋值都会为其开辟一块新的内存如:

            string s1 = "张三";
            string s2 = s1;
            s2 = "李四";
            Console.WriteLine(s1);
            Console.WriteLine(s2);
            Console.ReadKey();

最终结果,s1 = 张三, s2 = 李四

 

            int number = 10;
            TestTwo(ref number);
            Console.WriteLine(number);
            Console.ReadKey();

        }

        public static void TestTwo(ref int n)
        {
            n += 10;
        }

上述代码中,ref把n的地址变成类number的地址,也就是,ref把值传递变成了引用传递。

如果不加ref,值传递是把number的值传递给n,方法中没有返回值,不会改变外部调用方法时传递的实参,

但是加了ref以后,n接收的是number的地址,所以n的改变就会影响number的值(按照自己的理解所写,有点乱,呵呵)