[c#]params可变参数
2024-08-24 19:15:57
摘要
在项目中多多少少会用到params这个关键字,来修饰参数,它的作用,让该参数的个数是可变的,并且可变参数必须是方法的最后一个参数。但如何判断到底有没有为该参数传递值,怎么判断?
一个例子
static void Main(string[] args)
{
ParamTest();
ParamTest("");
ParamTest("1,2,3,4,5".Split(new char[] { ',', ',' }));
string[] strs = "".Split(new char[] { ',', ',' }, StringSplitOptions.RemoveEmptyEntries);
ParamTest(strs);
Console.Read();
}
static void ParamTest(params string[] paras)
{
Console.WriteLine(paras.Length);
}
上面的四次调用可变参数的方法,并输出可变参数的长度。如下:
如果是下面的这种情况又该输出什么?
ParamTest("".Split(new char[] { ',', ',' }));
答案是:1,因为空字符串也是值。
所以这里就需要对空字符串的情况进行处理了,如果对于分割的字符串,需要加上参数StringSplitOptions移除空项。
string[] strs = "".Split(new char[] { ',', ',' }, StringSplitOptions.RemoveEmptyEntries);
ParamTest(strs);
如果没有传递参数该如何判断
if (paras == null || (paras.Length == && string.IsNullOrEmpty(paras[])) || paras.Length == )
{
Console.WriteLine("没有传递参数");
return;
}
千万不要通过下面的方式判断,通常情况下,不会为可变参数直接传递null值
if (paras != null)
{ }
除非你传递就是null,不然这样判断没任何意义。如下图,如果不传递参数,paras也不会是null。
最新文章
- 通过Maven将Web程序部署到远程Tomcat8服务器的一些注意事项
- EnglishLeaning
- RabbitMQ入门教程——工作队列
- 【JDBC 报错】Connections could not be acquired from the underlying database!
- The index also can be used for LIKE comparisons if the argument to LIKE is a constant string that does not start with a wildcard character.
- mac 显示set a breakpoint in malloc_error_break to debug 终端显示进程已完成怎么办?
- c# ComboBox特殊属性
- 两个队列+k叉哈夫曼树 HDU 5884
- SSIS 学习(3):数据流任务(下)【转】
- 自编译安装nginx
- php命令行
- C#_C++_SDK_WM_KEYDOWN人物卡顿延迟解决方法
- [置顶] oracle 快速查询数据库各种信息、及转换对应java代码
- C#操作注册表--DarrenF
- jq的siblings对a标签不起效
- Redis大幅性能提升之Batch批量读写
- 【基础】CSS实现多重边框的5种方式
- 【bfs】抓住那头牛
- 6条 Tips 为你照亮 GitHub 寻宝之路
- (1)HomeAssistant 安装
热门文章
- 【codevs3945】 完美拓印
- BZOJ1018 [SHOI2008]堵塞的交通traffic
- Linux VFS Extended Attribute And Access Control Table
- 帝国备份王(Empirebak) \class\functions.php、\class\combakfun.php GETSHELL vul
- J-link烧写brjtag工具
- 帝国cms搜索表单用法
- AngularJs ngClass、ngClassEven、ngClassOdd、ngStyle
- 数据结构作业——order(二叉树遍历)
- mysql中文坑爹的东西
- Linux常用服务部署与优化之NFS篇