C# 方法和参数修饰符详解(ref、out、可选参数、命名参数和函数重载)

方法和修饰参数符

1、参数修饰符

参数修饰符 作用
(无) 如果一个参数没有用参数修饰符标记,则认为它按值传递(pass by value),这意味着被调用的方法收到的是原始数据副本(例子如下,调用Swap(aa, bb)方法不会发生数据的转换,但是调用void Swap(Class a, Class b)方法,由于传递的是对象(引用类型),数据会进行转换)
ref 调用者赋初值,并且可以由被调用的方法可选地重新赋值(数据按引用传递)如果调用的方法没有给ref参数赋值,则参数的值为传递的变量的值( Swap(ref aa, ref bb)方法转换了两个参数的值)
out out参数的值必须由调用方法赋值,数据按引用传递(pass by reference),如果调用方法没有给out参数赋值,会出现编译错误提示(所以定义out传入参数,不需要初始化;Swap(aa, out cc)方法输出cc的值为b)
params params参数修饰符允许将一组可变 的参数作为独立的逻辑参数传递。一个方法只能有一个params修饰符,且修饰符必须是最后一个参数(如Param(string[] arrStr)方法,此处只显示了最基础的传参调用)

2、可选参数

顾名思义,调用方法的参数可以传值,也可以不传值。不传值的话,可选参数使用形参默认值。注:可选参数必须在必须参数后面(如void Info(string a, string b = “”)方法)

3、使用命名参数调用方法

这个是调用方法的一种特殊形式,如void NamedParameters(string a, string b = “”, string c = “”)这个方法的情境下,可选参数b不需要赋值,使用命名参数再好不过。注意:使用命名参数时,冒号(:)前的参数名称必须和形参名称一致。

4、方法重载

定义很简单:定义一组名称相同的方法时,如果它们的参数数量(或类型)不同,这就叫做方法重载;
总结就是两必须,一可以
参数数量或类型必须不同,返回值可以不同
注:前两条必须满足其一,后一条返回值类型不同是不能构成重载的
本例中的Swap方法就是方法重载的具体实现。

 class Program
    {
   
        static void Main(string[] args)
        {
   
            Console.WriteLine("无参数修饰符 特殊string类型:");
            string aa = "a", bb = "b", cc;
            Swap(aa, bb);   //无参数修饰符 特殊string类型  
            Console.WriteLine($"aa={aa},bb={bb}");

            Console.WriteLine("ref参数修饰符:");

            Swap(ref aa, ref bb);   //ref参数修饰符 
            Console.WriteLine($"aa={aa},bb={bb}");

            Console
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值