C# out ref 重载

          今天看极客学院wiki时候看到了out,ref的介绍,之前对这个知识点没有深刻认识,所以就写了个小测试看了下,瞬间明白了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //1、两都在函数体的任何修改都将影响到外面。
            //2、ref必段在函数体外初始化。
            //3、out必须在函数体内初始化,在外面初始化没意义。也就是说,out型的参数在函数体内不能得到外面传进来的初始值。
            int i = 3;
            int k = 9;
            int m;
            int n = 10;
            ADD(i, k);
            ADD(out m, ref n);
            Console.WriteLine("i={0}",i);
            Console.WriteLine("k={0}", k);
            Console.WriteLine("m={0}", m);
            Console.WriteLine("n={0}", n);
            Console.ReadLine();
        }
        public static void ADD(out int i, ref int k)
        {
            i = 5;
            k = k - 4;
        }
        public static void ADD(int i, int k)
        {
            i = i - 5;
            k = k - 4;
        }
    }
}

结果:


看完这个后,又联想到了,重载的定义。

重载:同一个作用域内发生,定义一系列同名方法,但是方法的参数列表不同。然后我就迷糊了,我们这里采用out,ref 定义的方法参数列表算是重载么?

我们通过关键字的不同,运行过程调用了不同的方法。我们可以认定为方法的重载。

学习过程参阅了: http://blog.csdn.net/xiaoning8201/article/details/6893154

学习笔记,如有错误,欢迎批评指正。

原文地址:https://www.cnblogs.com/kim-meng/p/4979463.html