C#之值类型与引用类型--out参数--ref参数-"=="、Equals和ReferenceEquals之间的区别

一、值类型和引用类型

1.值类型

  (1)值类型的大小是固定的

  (2)值类型都派生自ValueType

  (3)值类型不能继承,只能实现接口

2.值类型:int、char、double、float、long、short、byte、bool、enum、struct、decimal

3.栈中内存使用

 

 4.引用类型

  (1)引用类型派生自object类

  (2)引用类型可以继承(类之间可以继承)

5.引用类型:string、数组、类、接口、委托、自定义类

6.值类型和引用类型总结

  (1)值类型赋值的时候是将栈中的数据拷贝了一个副本

  (2)引用类型赋值的时候是将栈中的地址拷贝了一个副本

 

二、out参数和ref参数

1.out参数

  (1)out参数在使用之前必须在方法里面为out参数赋值

  (2)out参数无法获取传递进来的变量中的值,只能为传递进来的变量赋值

  (3)out参数在方法执行完毕之前,必须赋值

static void Main(string[] args)
        {
            string m;
            string get_result=Test(out m);
            Console.WriteLine(get_result);

            Console.ReadKey();
        }

        static string Test(out string msg)
        {
            msg = "你好呀";
            return msg;
        }

在一般的传递参数中,是给方法传进去一个值;而out参数和普通参数相反,传参之前不能进行赋值。

2.ref参数

 

 3.总结:

  (1)ref表示是”按引用传递“,传递的是栈本身的地址。

  (2)值传递传递的是栈中的内容,是将栈中的内容拷贝了一个副本。 

 

三、==、Equals和ReferenceEquals的区别

TODO:

posted @ 2019-11-25 16:18  冯继强fjq  阅读(204)  评论(0编辑  收藏  举报