当前位置: 移动技术网 > IT编程>开发语言>c# > C# params可变参数的使用注意详析

C# params可变参数的使用注意详析

2019年09月08日  | 移动技术网IT编程  | 我要评论

今天在一个 .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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对移动技术网的支持。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网