软件编程
位置:首页>> 软件编程>> C#编程>> C# params可变参数的使用注意详析

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

作者:dudu  发布时间:2021-10-29 12:33:27 

标签:c#,params,可变参数

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

来源:https://www.cnblogs.com/dudu/p/11228948.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com