• 参数数目可变的成员


    < DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>
    参数数目可变的成员
    .NET Framework 开发人员指南
    参数数目可变的成员

    数组用于将数目可变的参数传递给成员。某些语言(如 C#)提供了一个关键字,用于修饰传递可变参数的数组。对于不提供关键字的语言,ParamArrayAttribute 属性可提供此功能。该关键字和属性影响成员签名的最后一个参数。该参数必须是一维数组。

    下面的代码示例演示定义和调用参数数目可变的方法。注意,在 DemonstrateVariableParameters 方法中,调用 UseVariableParameters 前参数不会放入数组。

    C#
    复制代码

    public static void UseVariableParameters(params int[] list)
    {
    for ( int i = 0 ; i < list.Length ; i++ )
    {
    Console.WriteLine(list[i]);
    }
    Console.WriteLine();
    }
    public static void DemonstrateVariableParameters()
    {
    Manager.UseVariableParameters(1,2,3,4,5);
    }

    下列准则有助于了解何时使用可变数组作为参数是适合的和有益的。
    如果需要最终用户传递少量元素,则考虑向数组参数添加 params 关键字。

    通常,如果开发人员要传递很多元素,则 params 关键字可能用处不大,因为开发人员不太可能内联传递大量对象。
    如果调用方几乎总要将输入放入数组,则不要使用 params 数组。

    例如,字节数据通常在字节数组中存储和处理。通常,将 params 关键字添加到字节数组参数不能解决问题,因为开发人员通常不使用还未存储到字节数组中的单个字节。
    如果数组由采用 params 数组参数的成员进行了修改,则不要使用 params 数组。

    公共语言运行库 (CLR) 可能已创建了一个临时数组对象。如果方法修改临时数组,则这些修改对调用方是不可用的。
    考虑在简单重载中使用 params 关键字,即使更复杂的重载不能使用它。

    在某个重载(即使不是所有重载)中使用 params 数组,对开发人员都是有好处的。
    尽量对参数进行排序,以使它能够使用 params 关键字。

    这意味着,只要可能,数组参数就应该是指定的最后一个参数。下面的代码示例演示的参数排序是不正确的。

    C#
    复制代码

    public int Add (int i,int j, short numberBase)


    C#
    复制代码

    public int Add (int i, int j, int k, short numberBase)


    C#
    复制代码

    // Can't use params array.
    public int Add (int [] numbers, short numberBase)

    这些参数应重新排序,如下所示:

    C#
    复制代码

    public int Add (short numberBase, int i,int j)


    C#
    复制代码

    public int Add (short numberBase, int i, int j, int k)


    C#
    复制代码

    // Can use params array.
    public int Add (short numberBase, params int [] numbers)

    考虑在性能极为敏感的 API 中为使用少量参数的调用提供特殊重载和代码路径。

    按照此准则,在调用带有少量参数的成员时可以避免创建数组。参数名称应为数组参数的单数形式,后跟一个数字后缀。下面的代码示例演示一个符合此准则的成员签名。


    C#
    复制代码

    public static void WriteLine(
    string format,
    object arg0,
    object arg1,
    object arg2
    )

    注意 null(在 Visual Basic 中为 Nothing)可以作为 params 数组参数进行传递。

    在处理 null 数组之前,成员应对其进行检查。
    不要使用 varargs 方法,这种方法以省略号的形式表示。

    因为 varargs 调用约定不符合 CLS,所以不应在公共成员中使用。它可以在内部使用。

    部分版权所有 2005 Microsoft Corporation。保留所有权利。

    部分版权所有 Addison-Wesley Corporation。保留所有权利。

    有关设计指南的更多信息,请参见 Krzysztof Cwalina 和 Brad Abrams 编著、Addison-Wesley 于 2005 年出版的“Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries”(《框架设计指南:可重用 .NET 库的约定、术语和模式》)。
    请参见
    概念
    参数设计
    其他资源
    成员设计准则
    类库开发的设计准则
  • 相关阅读:
    ThinkPHP 5 中AJAX跨域请求头设置方法【转】
    phpstorm激活大全【转】
    PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function【转】
    php的dirname(__FILE__)和dirname(dirname(__FILE__))使用总结【转】
    php 设置临时内存和超时设置脚本最大执行时间
    mysql 实现表连接(左,右,内,全连接)【转】
    Maximum execution time of 30 seconds exceeded解决办法【转】
    常用邮箱SMTP服务器地址大全
    叉积(POJ
    乘法逆元(P3811)(四种方法)
  • 原文地址:https://www.cnblogs.com/netcorner/p/2912159.html
Copyright © 2020-2023  润新知