C#里面的ref与out

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*
 * ref与out的用法
 * ref:
 * ref关键字使参数按引用传递,其效果是,当控制权传递回调用方法时,在方法中对参数任何更改都将反映在该变量中,若要使用ref参数,则方法定义和调用方法都必须显示使用ref关键字
 * ref值必须先进行初始化(赋值):改变外部,变量会一起改变
 * ref就相当于C++里面的引用
 * out:
 * 若要使用out参数,方法定义和调用方法都必须显示使用out关键字
 * out值可以不初始化,必须在函数体进行赋值
 * out就是向外传值
 * ref与out的异同点:
 * 相同点:
 * 既可以通过值也可以通过引用传递参数,通过引用传递参数允许函数成员更改参数的值,并保持该更改,若要通过引用传递参数,可使用ref或out关键字,ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量
 * 区别:
 * 1.使用ref型参数时,传入的参数必须先被初始化,对out而言,必须在方法中对其完成初始化;
 * 2.使用ref和out时,在方法的参数和执行方法时,都要加ref或out关键字,以满足匹配哦;
 * 3.out适合用在需要return多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候;
 * 
 * 
*/
namespace ConsoleApplication2
{
    class Program
    {
        #region
        //static void Main(string[] args)
        //{
        //    //ref值必须先进行初始化(赋值)
        //    int numOne = 10;
        //    int numTwo = 20;
        //    //函数调用ref关键词
        //    refNum(ref numOne,ref numTwo);
        //    Console.WriteLine("num=" + numOne);
        //    Console.WriteLine("num=" + numTwo);
        //    //out值可以不初始化
        //    int numThree = 1;
        //    int numFour;
        //    outNum(out numThree,out numFour);
        //    Console.WriteLine("num=" + numThree);
        //    Console.WriteLine("num=" + numFour);
        //    Console.ReadKey();
        //}
        ref用法,函数定义注意ref关键词
        //public static void refNum(ref int a, ref int b)
        //{
        //    //改变外部变量会一起改变
        //    a++;
        //    b++;
        //}
        out用法,函数定义注意out关键词
        //public static void outNum(out int a, out int b)
        //{
        //    //必须在函数体进行赋值
        //    a = 10;
        //    b = 20;
        //}
        #endregion
        #region//求最大最小值以及求和
        //static void Main(string[] args)
        //{
        //    int readNumOne = int.Parse(Console.ReadLine());
        //    int readNumTwo = int.Parse(Console.ReadLine());
        //    int maxNum;
        //    int minNum;
        //    int sumNum;
        //    Sum(readNumOne,readNumTwo,out maxNum,out minNum,out sumNum);
        //    Console.WriteLine("最大值=" + maxNum + "最小值=" + minNum + "和=" + sumNum);
        //    Console.ReadKey();
        //}
        //public static void Sum(int a, int b, out int A, out int B, out int AB)
        //{
        //    if (a > b)
        //    {
        //        A = a;
        //        B = b;
        //    }
        //    else
        //    {
        //        A = b;
        //        B = a;
        //    }
        //    AB = a + b;
        //}
        #endregion
        #region//求奇数偶数
        //static void Main(string[] args)
        //{
        //    int[] num = new int[10] { 0,1,2,3,4,5,6,7,8,9};
        //    int[] numJ;
        //    int[] numO;
        //    JiOu(num, out numJ, out numO);
        //    for (int i = 0; i < numO.Length; i++)
        //    {
        //        Console.WriteLine("偶数值=" + numO[i]);
        //    }
        //    for (int i = 0; i < numJ.Length; i++)
        //    {
        //        Console.WriteLine("奇数值=" + numJ[i]);
        //    }
        //    Console.ReadKey();
        //}
        //public static void JiOu(int[] nums,out int[] j,out int[] o)
        //{
        //    j = new int[5];
        //    o = new int[5];
        //    int indexJ = 0;
        //    int indexO = 0;
        //    for (int i = 0; i < nums.Length; i++)
        //    {
        //        if (nums[i] % 2 != 0)
        //        {
        //            j[indexJ] = nums[i];
        //            indexJ++;
        //        }
        //        else
        //        {
        //            o[indexO] = nums[i];
        //            indexO++;
        //        }
        //    }
        //}
        #endregion
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值