zoukankan      html  css  js  c++  java
  • 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:

  • 相关阅读:
    C++字节对齐与位域
    使用GDB调试将符号表与程序分离后的可执行文件
    在windows上编译apr库
    使用samba共享文件夹,提供给window访问
    Linux常用命令
    使用VS2015编译xlslib库
    VS资源收藏<持续更新中>
    使用Visual Studio 2017 C++17模块(module)特性
    RMAN中format的参数
    C#的Process类的一些用法
  • 原文地址:https://www.cnblogs.com/fengjiqiang123/p/11928535.html
Copyright © 2011-2022 走看看