总结:CLR Via C#(第八章):其他(方法传递、out、ref)

通过引用向方法传递参数:

1Outref的区别:

如果方法的参数标记为out参数可以不初始化,但必须在返回之前对对象赋值;

如果方法的参数标记为ref,参数必须在调用之前初始化;

         也就是说,对大量值类型使用关键字out后,代码效率会提高;

2CLR允许基于方法对outref参数的使用来重载方法,但仅存在outref差异的方法是不允许的;

        static void Add(int i)

        {

        }

 

        static void Add(out int i)

        {

        }

     如果加入下面方法,就会出错

//Error:Add不能定义仅在ref 和out 上有差别的重载方法

        static void Add(ref int i)

        {

        }

 

向方法传递可变数量的参数:

关键字params是应用于方法签名的最后一个参数;

     private static Int32 Add(params Int32[] values) {

         // NOTE: it is possible to pass the 'values'

         // array to other methods if you want to.

 

         Int32 sum = 0;

         for (Int32 x = 0; x < values.Length; x++)

              sum += values[x];

         return sum;

     }

 

     private static void DisplayTypes(params Object[] objects) {

         foreach (Object o in objects)

              Console.WriteLine(o.GetType());

     }

注意:对可接受可变参数数量的方法的调用会导致一些额外的性能损失;

          最好的方法是对方法进行重载;

 

声明方法的参数类型:

声明方法的参数类型时,尽可能指定弱类型;

方法的返回类型,尽量指定强类型;

如果为了保留更多的灵活性,返回类型可以指定弱类型;

 

转载于:https://www.cnblogs.com/LeimOO/archive/2010/01/22/1654340.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值