• 引用类型传参不加 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
            }
        }
  • 相关阅读:
    操作系统基础知识
    os库基本介绍
    原型模式
    ASP .NetCore 部署500错误 查看异常详情
    css设置文本自动换行
    SqlServer数据库链接字符串
    Json列表数据查找更新
    VB中将类标记为可序列化
    VB 性能优化点
    参加公司工作总结会要准备的内容 IT 技术部
  • 原文地址:https://www.cnblogs.com/chinabc/p/2210029.html
Copyright © 2020-2023  润新知