C#的params参数遇到null
params参数支持数组作为参数传入,但并不支持List
定义一个使用params的参数
private static void UseParam(params int[] args) { if (args == null) { Console.WriteLine("null"); } else { Console.WriteLine("len={0}", args.Length); } }
UseParam(); UseParam(null); UseParam(new int[]{ 1, 2 }); //UseParam(new List<int> { 1, 2 }); IEnumerable<int> lst = new List<int> { 1, 2 }; //UseParam(lst); UseParam(1); UseParam(1, 2);
运行结果:
len=0 null len=2 len=1 len=2
可以看到,null是可以作为参数传入的,所以使用params参数的方法最好是进行null判断:
public static string Concat(params object[] args) { if (args == null) { throw new ArgumentNullException("args"); } ... }
如果你觉得这篇文章对你有帮助或者使你有所启发,请点击右下角的推荐按钮,谢谢,:)