C# 中的变参

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

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

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

Code

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

 

Code

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

           

Code

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

           

Code

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

           

Code

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

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

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

           

Code

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

  1. 只有方法最后的一个参数才可以使用params关键字,参数类型不限。
  2. 给变参传递一个null或者0长的数组都是合法的,但是当传null时,最好有是否为空的判断,否则会引发空指针异常。
posted @ 2008-08-27 10:52  李潘  阅读(1423)  评论(3编辑  收藏  举报