C# params可变参数的使用注意详析
程序员文章站
2022-05-26 17:21:57
今天在一个 .net core 项目中调用一个自己实现的使用 params 可变参数的方法时触发了 null 引用异常,原以为是方法中没有对参数进行 null 值检查引起的...
今天在一个 .net core 项目中调用一个自己实现的使用 params 可变参数的方法时触发了 null 引用异常,原以为是方法中没有对参数进行 null 值检查引起的,于是加上 check null 代码:
public static void buildblogpostlinks(params blogpostdto[] blogposts) { if (blogposts == null) return; foreach (var blogpost in blogposts) { //... } }
结果却出人意料, null 引用异常继续,仔细看异常 stack 才发现原来 null 引用异常是在 foreach 时抛出的,需要在 foreach 时对 blogpost 进行 check null 。
下面的示例代码可以验证这一点
class program { static void main(string[] args) { buildblogpostlinks(null); blogpost blogpost = null; buildblogpostlinks(blogpost); } public static void buildblogpostlinks(params blogpost[] blogposts) { if (blogposts == null) { console.writeline("blogposts in null"); return; } foreach (var blogpost in blogposts) { if (blogpost == null) { console.writeline("blogpost in null"); } else { console.writeline("blogpost.title: " + blogpost.title); } } } } public class blogpost { public string title { get; set; } }
运行时的输出结果是
$ dotnet run
blogposts in null
blogpost in null
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。