某日,我们一项目重构,不小心为一个类增加了一个Delete(string key)的方法,编译通过,初看无恙,但一执行起来就不是那么回事了,仔细一查,才知道,类中有一个同名的重载方法,参数为一个params参数数组,难道是它作祟?

Msdn一下,果然如此:参考资料:params(C# 参考)http://msdn.microsoft.com/zh-cn/library/w5zay9db(v=VS.100).aspx

也就是它可以接受如下代码里的各种参数,真是太灵活了,像个黑洞,有点可怕。

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

LzdTools.Test("aaa");

LzdTools.Test("aaa", "bbb");
            LzdTools.Test("aaa", "bbb", "ccc");

string[] arr = { "ddd", "eee", "fff" };
            LzdTools.Test(arr);

Console.ReadKey();          
        }      
    }

public static class LzdTools
    {
        public static void Test(params string[] v)
        {
            if (v.Length > 0)
                Console.WriteLine(v[0]);
           
            if (v.Length > 1)
                Console.WriteLine(v[1]);
           
            if (v.Length > 2)
                Console.WriteLine(v[2]);
           
            if (v.Length > 3)
                Console.WriteLine(v[3]);
        }
    }
}

转载于:https://www.cnblogs.com/liuzhendong/archive/2012/01/10/2318271.html

灵活而又可怕的params参数数组相关推荐

  1. 参数数组(params)的用法

    使用参数数组的注意事项: 1. 只能在一维数组上使用params关键字. 2. 不能重载一个只基于params关键字的方法.params关键字不构成方法的签名的一部分. 如: //编译时错误:重复访问 ...

  2. 函数,参数数组params与数组参数,结构函数

    1.函数 static 返回值类型 函数名(形参1,形参2,...){        函数体;        return 返回值; } 无返回值,则static void 函数名(){ } stat ...

  3. C#可选参数、命名参数、参数数组

    学习了C#4.0的新特性:可选参数.命名参数.参数数组. 1.可选参数,是指给方法的特定参数指定默认值,在调用方法时可以省略掉这些参数. 但要注意: (1)可选参数不能为参数列表的第1个参数,必须位于 ...

  4. c#---params参数

    写一个方法,求一个同学的总成绩 static void Main(string[] args){int[] n = { 99, 88, 77 };Test("张三", n);Con ...

  5. C#方法的六种参数,值参数、引用参数、输出参数、参数数组、命名参数、可选参数...

    方法的参数有六种,分别是值参数.引用参数.输出参数.参数数组.命名参数.可选参数. 值参数 值参数是方法的默认类型,通过复制实参的值到形参的方式把数据传递到方法,方法被调用时,系统作两步操作: 在栈中 ...

  6. C#交错数组和参数数组

    交错数组 交错数组的声明和初始化 int[][] array ; 声明交错数组array = new int[n][] ; 创建一个包含n个元素的交错数组,交错数组的元素就是一维数组array[0] ...

  7. 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )

    文章目录 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 二.完整代码示例 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 在上一篇博客 [C 语言]结构体 ( 结构体 数 ...

  8. params参数的调用

    namespace params参数的用法 {class Program{public static void Test(string name,params int[] score){int sum ...

  9. 利用Apply的参数数组化来提高代码的优雅性,及高效性

    利用Apply的参数数组化来提高代码的优雅性,及高效性 Function.apply()在提升程序性能方面的技巧 我们先从Math.max()函数说起,Math.max后面可以接任意个参数,最后返回所 ...

最新文章

  1. windows十大必禁服务
  2. python量化交易书_Python量化交易
  3. flock文件锁的学习和应用
  4. 数量和/或“交货结束”指示符或最终发货指示符丢失
  5. android studio 项目迁移 gradle 不对导致的卡住解决方法
  6. 面试官又整新活,居然问我for循环用i++和++i哪个效率高?
  7. Python学习笔记:演示多根继承
  8. sql server 2014 判断一个列某个字段是否相同_Select * from user的千层套路——一个sql是如何执行的...
  9. 一个小技巧让你轻松处理Selenium处理滚动条和元素聚焦
  10. Maven实战(六)依赖
  11. 2008年日历带农历_头条文章--Excel中带农历的万年历设计方法一
  12. jdbc连接mysql数据库 工作流程_jdbc连接数据库流程图
  13. 华硕M2A-VM+AMD4000超频方法
  14. android studio for android learning (六)应用程序窗体显示状态操作(requestWindowFeature等的应用)
  15. 图像处理——同态滤波
  16. Java中常见异常及异常处理方式
  17. keras 的dot、multiply区别
  18. 归并排序+快排+快速选择+桶排序
  19. php踩过的那些坑(2) strpos引发的血案
  20. 专科计算机课程作业2理解题,计算机第二模块练习题

热门文章

  1. js实现返回顶部功能的解决方案
  2. 缩点+染色+DFS codeforce467D
  3. linux下搭建hexo环境
  4. DNA repair - HDU 2457(自动机+dp)
  5. 机器学里面的一些概念-召回率,精确度等的介绍
  6. 详解在Visual Studio中使用git版本系统
  7. 遨游金山网盾?蹦出来有啥用?
  8. 改善ASP.NET2.0性能的五件法宝
  9. (转)aspnet网址收藏
  10. 互联网金融产品需要什么样的产品经理?