C#高级参数{out,ref,params}

转自:http://www.cnblogs.com/linfenghp/p/6618580.html

C#中有三个高级参数,分别是out,ref,params.

out,用于在方法中返回多余值。(可以理解为让一个方法返回不同的类型值),我们通过例子来理解例子的功能:用一个方法,判断用户是否登陆成功(布尔类型),同时提示用户是否登陆成功(字符串类型)    

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

namespace blog
{
    class Program
    {
        static void Main(string[] args)
        {
            string str;
            Console.WriteLine("请输入用户名");
            string uersname = Console.ReadLine();
            Console.WriteLine("请输入密码");
            string password = Console.ReadLine();
            //传入参数也一样要在参数前面添加一个out
            bool b = login(uersname, password, out str);
            if (b)
            {
                Console.WriteLine(str);
            }
            else
            {
                Console.WriteLine(str);
            }
            Console.ReadKey();
        }
        public static bool login(string name, string pwd, out string msg)
        {
            //如果需要返回多个参数,则添加多个参数即可,例如login(string name, string pwd, out string msg,out int num)
            //out多余返回值,用于一个方法中多余返回的值,例如这个方法中,
            //返回值是布尔类型,同时,还可以返回一个多余的值,msg
            //out的参数必须在方法中进行初始化
            bool result;
            if (name == "admin" && pwd == "123")
            {
                msg = "登陆成功";
                result = true;

            }
            else
            {
                msg = "登陆失败";
                result = false;
            }

            return result;
        }
    }
}

ref关键字用于将方法内的变量改变后带出方法外。具体我们通过例子来说明:

例子中,将变量n1和n2交换了。如果没有加ref参数,由于没有swadDemo()方法没有返回值,调用后,n1和n2是不会交换的,但是加了ref后,变量便会在swadDemo()中改变后并带出。

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

namespace blog
{
    class Program
    {
        static void Main(string[] args)
        {

            refDemo();
        }
        #region 使用高级参数ref
        private static void refDemo()
        {
            int n1 = 1;
            int n2 = 2;
            swadDemo(ref n1, ref n2);
            Console.WriteLine("n1:" + n1 + "\r\n" + "n2:" + n2);
            Console.ReadLine();
        }
        #endregion

        #region 高级参数ref用法
        public static void swadDemo(ref int a, ref int b)
        {

            //注意,这个方法中,并没有返回值。但是,由于加了ref,
            //所以会将变量改变后再带出。
            //ref参数,用于将方法内的变量改变后带出方法外
            int temp;
            temp = a;
            a = b;
            b = temp;
        }
        #endregion
    }
}

params,可变参数,使用十分简单,看代码吧。

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

namespace blog
{
    class Program
    {
        static void Main(string[] args)
        {
            
            int[] a = paramDemo(1,2,3,4);
            Console.WriteLine(a.Length);
            int[] arr = { 1, 2, 3, 4, 5, 6 };
            int[] b = paramDemo(arr);
            Console.WriteLine(b.Length);
            Console.ReadLine();
        }
        /// <summary>
        /// 可变参数,在参数前面添加params关键字,比如
        /// 下面方法是要传入一个int数组类型。那么,加入params后
        /// 调用的时候直接传入一个 例如pparamDemo(1,2,3)这样一个 数组也是不会报错的
        /// 但是注意参数列表必须是参数的最后一个参数才可以
        /// </summary>
        /// <param name="arr"></param>
        public static int[] paramDemo(params int[] arr)
        {
            return arr;
        }

    }
}




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值