C# 中的变参

        C#中的方法需要一个明确的方法签名,签名包括以下内容:返回类型、方法名称和参数列表。有时也包括访问限制符。

        签名中的参数列表中的参数数目包括固定和不固定两种类型,数目固定的情况是我们经常见到的,不固定的则是很少见的。

        例如,当我们需要实现一个整数加法的时候,可能首先想到的是下面的形式:

ContractedBlock.gifExpandedBlockStart.gifCode
public int Add(int value1, int value2){return value1 + value2;}

        这种方法在大部分的情况下是可以满足我们的需要的,但是如果我们想要一个不止两个整数相加的方法,而是很多个整数相加的,我们可以改写成这种形式:

 

ContractedBlock.gifExpandedBlockStart.gifCode
 1 public int Add(int[] values)
 2 {
 3     int result = 0;
 4 
 5     for (int i = 0; i < values.length; i++)
 6     {
 7         result += values[i];
 8     }
 9 
10     return result;
11 }
12 

        这种实现形式应该满足了我们新的需要了,它可以计算多个整数相加的情况。那么如何去调用这个方法呢?如下:

           

ContractedBlock.gifExpandedBlockStart.gifCode
int result = Add(new int{1,2,3,4,5});

         这是没有问题的,但是我们总是看着不太习惯,因为当我们去做多个整数相加时,首先要把它们放到一个数组中,这就表明作为服务的提供者,它封装的不是很好。为了改进这个缺点,我们进行如下改动:

           

ContractedBlock.gifExpandedBlockStart.gifCode
public int Add(params int[] values)
{
    
int result = 0;

    
for (int i = 0; i < values.length; i++)
    {
        result 
+= values[i];
    }

    
return result;
}

      和上一个版本相比,基本上没有变化,只是把参数列表中的int[] values 变为params int[] values。这时,我们看一下如何调用这个方法呢?如下:

           

ContractedBlock.gifExpandedBlockStart.gifCode
int result = Add(1,2,3,4,5);

        这时,基本上满足我们调用的习惯了。

        Params关键字就是c#中对于变参方法中使用的关键字,它是

System.ParamArrayAttribute特性的缩写。所以上面的方法声明可以改成这样:

           

ContractedBlock.gifExpandedBlockStart.gifCode
public int Add([ParamArray] int[] values){…}

        使用params时需要注意的事项:

  1. 只有方法最后的一个参数才可以使用params关键字,参数类型不限。
  2. 给变参传递一个null或者0长的数组都是合法的,但是当传null时,最好有是否为空的判断,否则会引发空指针异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值