欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

总结

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