zoukankan      html  css  js  c++  java
  • 引用类型传参不加 ref 的注意事项

    public class MyClass
        {
            public int Value;
        }

        //MSDN: http://msdn.microsoft.com/zh-cn/library/s6938f28%28v=vs.80%29.aspx
        
    //引用类型的变量不直接包含其数据;它包含的是对其数据的引用。当通过值传递引用类型的参数时,有可能更改引用所指向的数据,如某类成员的值。
        
    //但是无法更改引用本身的值;也就是说,不能使用相同的引用为新类分配内存并使之在块外保持。
        
    //若要这样做,应使用 ref 或 out 关键字传递参数。

        
    // 引用类型参数没有加ref 试图将参数重新分配到不同的内存位置时,该操作仅在方法内有效,并不影响原始变量
        class Program
        {
            static void Main(string[] args)
            {
                MyClass m = new MyClass();
                m.Value = 1;

                Console.WriteLine(m.Value);//Step 1-->1
                Test1(m);
                Console.WriteLine(m.Value);//Step 3 --> 50

                Test2(ref m);
                Console.WriteLine(m.Value); //Step 5 -->100
                Console.ReadLine();
            }

            public static void Test1(MyClass m)
            {
                m.Value = 50;
                m = new MyClass();
                m.Value = 200;
                Console.WriteLine("Func: Test1, m Value = {0}", m.Value);// Step 2 --> 200
            }

            public static void Test2(ref MyClass m)
            {
                m.Value = 60;
                m = new MyClass();
                m.Value = 100;
                Console.WriteLine("Func: Test2, m Value = {0}", m.Value);//Step 4 -->100
            }
        }
  • 相关阅读:
    docker 学习操作记录 4
    docker 学习操作记录 1
    centos 旧版本镜像
    zabbix 搭建 mysql 连接报错
    js判断是否为手机或是pc
    滚动翻页vue
    note
    Vue-cli 鼠标监听事件之滚动条
    adobe Keychain mac
    HTML协义代码
  • 原文地址:https://www.cnblogs.com/chinabc/p/2210029.html
Copyright © 2011-2022 走看看