数组被用来把一个可变数量的参数传递给成员。在 CLR 中,一些编程语言(如 C#)提供了一个用来为传递可变参量的数组进行修饰的关键字。而对于没有提供这种关键字的编程语言,则能够使用 ParamArrayAttribute 特性来提供这个功能。这些关键字和特性能够影响到成员签名中排在最后的参数,并且这个参数还必须是一个单维数组。

下列代码范例示范了定义并调用一个获取可变数量的参数的方法。注意,在 DemonstrateVariableParameters 方法中,参量并没有在调用 UseVariableParameters 之前被放进一个数组中。

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 关键字的使用变得可能。

这表示,在可能的时候,一个数组参数应该是最后才被指定的参数。下列代码范例示范了一个错误的参数次序。

public int Add (int i, int j, short numberBase) 
public int Add (int i, int j, int k, short numberBase) 
// 不能使用 params 数组。
public int Add (int[] numbers, short numberBase) 

这些参数应该被重新排列成如下所示:

public int Add (short numberBase, int i, int j)
public int Add (short numberBase, int i, int j, int k) 
// 能够使用 params 数组。
public int Add (short numberBase, params int[] numbers)
考虑在一个对性能极端敏感的 API 中为少数参量的调用而提供特殊的重载和代码路径。

通过遵循这个指导方针,你能够避免在一个获取少数参量的成员被调用的时候创建数组。参数的名称应该是遵循数组参数并且以一个递增的数字来作为后缀的单数形式。下列代码范例示范了一个遵循了这个指导方针的成员签名。

public static void WriteLine(string format, object arg0, object arg1, object arg2
)
明白 null 值(在 Visual Basic 中是 Nothing)能够与一个 params 数组参量一样被传递。

你的成员应该在处理数组之前检查它的值是否为 null。

不要使用可变容的方法,否则会被当作省略号。

因为可变容的调用约定与 CLS 不兼容,因此它不应该在公开的成员中被使用。不过它可以在成员的内部使用。

转载于:https://www.cnblogs.com/Laeb/archive/2007/02/01/637401.html

.NET 指南:使用可变数量的参数的成员相关推荐

  1. php可变数量的参数

    PHP 在用户自定义函数中支持可变数量的参数列表.在 PHP 5.6 及以上的版本中,由 ... 语法实现:在 PHP 5.5 及更早版本中,使用函数 func_num_args(),func_get ...

  2. php可变方法,php 函数使用可变数量的参数方法

    php 函数使用可变数量的参数方法 发布于 2017-08-07 16:57:47 | 89 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pr ...

  3. python支持可变数量的参数、实参用参数名表示_以下关于函数参数传递的描述,错误的是:( )...

    以下关于函数参数传递的描述,错误的是:( ) 答:Python 支持可变数量的参数,实参用"*参数名"表示 可同时打开()个Excel 窗口 答:若干 下列各项属于企业存货的有(? ...

  4. C++11可变数量模板参数可变类型模板参数并使用lamada函数调用使用范例

    为了完成这个功能,耗费一整天. 背景是需要到一张表中查询,条件不一样,但是都可以通过PreparedStatement_setXX设置,想体验一把C++11的高级模板特性,设计如下封装 inline ...

  5. mysql创建有参数的函数,使用动态数量的参数创建MySQL存储函数

    我正在尝试创建一个MySQL函数IS_IN_ENUM('value','val1′,'val2′,'val3′),如果'value'在('val1′,'val2′,'val3')中,则返回true.我 ...

  6. Laravel路由中不固定数量的参数如何实现?

    前言 laravel是个好框架,我也在学习和使用,并且在公司里推广,最近在读 Laravel 源码的时候,发现了一个段特别有趣的代码,大家请看: ... 这三个点是做什么用的呢?我查了 PHP 的手册 ...

  7. 《CLR Via C# 第3版》笔记之(十) - 可选参数和可变数量参数

    C#中也可以像动态语言那样,定义可选参数和可变数量参数.通过使用可选参数和可变数量参数可以构建更加灵活的函数. 主要内容: 可选参数 可变数量参数 1. 可选参数 可选参数即调用函数时,传递参数的个数 ...

  8. 如何创建可变数量的变量?

    本文翻译自:How do I create a variable number of variables? How do I accomplish variable variables in Pyth ...

  9. python连接access 参数太少_paip. 解决php 以及 python 连接access无效的参数量。参数不足,期待是 1”的错误...

    paip. 解决php 以及 python 连接access无效的参数量.参数不足,期待是 1"的错误 作者Attilax  艾龙,  EMAIL:1466519819@qq.com

最新文章

  1. 外媒:Feinstein Institute的研究人员通过脑植入电极唤起触觉
  2. Intel汇编语言程序设计学习-第五章 过程-下
  3. 网络流之 最短增广路算法模板(SAP)
  4. 成功解决ImportError: Matplotlib qt-based backends require an external PyQt4, PyQt5,问题
  5. mvc 404错误 php,ASP.NET MVC实现404跳转的代码实例
  6. System类的常用方法
  7. libcoredb.class.php,ThinkPHP/Lib/Core/Db.class.php中pdo处理逻辑似乎不完善,导致config中pdo配置失效...
  8. y空间兑换代码_【CV学习笔记】色彩空间
  9. mysql支持多语言_多种语言连接MySQL-Go语言中文社区
  10. XproerIM-V1,2,12,65475发布。
  11. foxmail邮件加载失败重试_Foxmail提示错误的解决方案
  12. php如何除去图片水印,Phpcms v9如何去掉自带水印的解决方法
  13. 2021年清北等重点高校都有哪些冬令营?最全汇总看这里!
  14. 为什么社会上的Java程序员还没有饱和?
  15. matlab中eval函数 批量运行程序代码
  16. QQ怎么样设置透明头像?2020最新方法!一个小工具快速搞定!
  17. SE-第一章-整理-CCUT-ZY
  18. python网易云热歌榜歌曲信息爬取(iframe框架内数据爬取,src为空)
  19. IIB接收SAP请求配置
  20. python创建学生类和教师类,python,学校成员类的例子,老师和学生(python class父类与子类之间的联系与逻辑)...

热门文章

  1. 上海交通大学计算机专业有调剂吗,上海交通大学2019计算机系考研调剂信息
  2. 设计模式 过滤器模式
  3. HTML5 自由画布
  4. Webstorm React Nodejs 整合
  5. Windows Server 2008 R2 安全加固
  6. 两个div在同一行且不换行
  7. #内存不够,swap来凑# Linux上创建SWAP文件/分区
  8. secureCRT连接服务器和文件传输( 一步搞定)
  9. .Net Core 中间件之主机地址过滤(HostFiltering)源码解析
  10. 父级透明,子级不透明