[c#]params可变参数
摘要
在项目中多多少少会用到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 == 1 && string.IsNullOrEmpty(paras[0])) || paras.Length == 0) { Console.WriteLine("没有传递参数"); return; }
千万不要通过下面的方式判断,通常情况下,不会为可变参数直接传递null值
if (paras != null) { }
除非你传递就是null,不然这样判断没任何意义。如下图,如果不传递参数,paras也不会是null。
-
博客地址:http://www.cnblogs.com/wolf-sun/
博客版权:如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义