今天看极客学院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。
学习笔记,如有错误,欢迎批评指正。
时间: 2024-10-05 04:44:52