创建和使用不定数目参数的函数

原创 2004年07月11日 17:40:00

CC++这样的语言提供了很多手段用于创建和使用一个接受不定数目参数的函数,最典型的例子就是printf()函数:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

int printf(char *format, …);  //省略号表示参数数目不定

使用这个函数十分的简单:

printf("Hello, world/n");

printf("The sum of %d and %d is %d/n", a, b, a+b);

不过, 使用这些语言创建这样的函数必须依赖于一系列预先定义的宏,而且往往并不具有直观性和优雅性。

通过运用参数数组,C#提供了一种解决这个问题的优雅的解决方案。参数数组是一个一维数组,它作为方法的最后一个参数出现在参数列表中:

public string Concat(string separator, params string[] strings)

{

     string result = "";

     for (int i = 0; i < strings.Length; i++)

     {

        if (i > 0)

           result += separator;

        result += strings[i];

     }    

     return result;

}

上面的方法用于将一些字符串连接成一个字符串,这个方法可以以下面两种不同的方式调用:

1)        使用数组实例作为参数传递给方法:

string[] names = { "Anders", "Eric", "Scott", "Duncan" };

MessageBox.Show(Concat("+", names) + " = great team");

2)        使用0个或多个类型相容的参数传递给方法:

MessageBox.Show(Concat("+", "Anders", "Eric", "Scott", "<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />Duncan") + " = great team");

       使用第二种方法调用方法时,会先使用这些类型相容的参数(上例中指的是第一个参数后面所有的参数)创建一个数组,然后把这个参数数组作为真正的实参传递给方法。从这一点可以看出:事实上,上面两种方法传递实参的机制完全相同,只是表现手法不同而已。

       得益于.NET统一的类型系统(所有类型都从object继承,因此可以利用多态性原理实现类型的统一处理),定义方法时可以将object[]作为任何类型的代名称定义为参数数组,调用方法时使用具体的类型调用:

public int SumTheIntegers(params object[] list)

{

 // sum all the integers included in list   

    int sum = 0;

    foreach (object o in list)

        if (o.GetType() == typeof(int))

            sum += (int) o;

    return sum;

}

写一个类似printf的带有不定参数的函数

#include #include #include #include using namespace std; //函数原型声明,至少需要一个确定的参数,注意括号内的省略号 int demo...
  • q277055799
  • q277055799
  • 2012年06月28日 11:17
  • 2693

在VB中实现向函数传递不定个数参数

在VB中实现向函数传递不定个数参数其实很容易,下面我写出代码,今天在开发的工程中正好用得上.十分实用.^_^ 新建一个EXE工程,加入一个Listbox1和Command1,代码如下: Option ...
  • tanaya
  • tanaya
  • 2004年07月12日 14:02
  • 3732

参数数目不定的函数

介绍如何编写参数数目不定的函数,并且解释实现的原理
  • qqliyunpeng
  • qqliyunpeng
  • 2016年10月28日 17:47
  • 389

C、C++不定参数的使用

原帖:http://blog.csdn.net/arong1234/archive/2008/05/18/2456455.aspx 不定参数当年做为C/C++语言一个特长被很多人推崇,但是实际上这种技...
  • fengrx
  • fengrx
  • 2009年04月29日 08:34
  • 14170

php函数的创建,以及引用传递和值传递的介绍!

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...
  • a690353073
  • a690353073
  • 2016年05月28日 12:00
  • 252

不定长参数——javascript

http://zhangh1014.blog.163.com/blog/static/177723473200711652940405/ 在javascript中,通过arguments对象可以获取...
  • jji8877032
  • jji8877032
  • 2014年06月09日 18:43
  • 442

c/c++不定参数函数

http://plutoblog.iteye.com/blog/1150671 不定参数函数 stdarg.h是C语言中C标准函数库的头文件,stdarg是由stdandard(标准) argum...
  • bytxl
  • bytxl
  • 2013年01月06日 16:00
  • 815

C#函数传递不定参数

using System; class Min{    public int MinVla(params int [] nums){        int m;        if (nums.Len...
  • adream307
  • adream307
  • 2011年04月18日 13:14
  • 1654

不定参数的宏 函数

写一个带不定参数的宏函数
  • wukery
  • wukery
  • 2016年11月22日 15:11
  • 417

怎样实现数目不定的函数参数

 怎样实现数目不定的函数参数   实现方法一:自定义指针找到函数参数的下一个参数;   // 例子 A : template T umin(T _a, ...) {                  ...
  • xylary
  • xylary
  • 2006年12月29日 21:23
  • 927
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:创建和使用不定数目参数的函数
举报原因:
原因补充:

(最多只允许输入30个字)