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

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

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

标签:c#,params,可变参数
0
投稿

猜你喜欢

  • Android实现简单画图画板

    2022-04-02 12:52:56
  • C#直线的最小二乘法线性回归运算实例

    2022-05-03 11:19:33
  • 常用Eclipse快捷方式(推荐)

    2022-01-22 04:37:56
  • java中的基础运算符

    2022-06-23 04:19:38
  • 总结一次C++ 程序优化历程

    2023-11-02 22:38:30
  • c#编写的番茄钟倒计时器代码

    2023-02-23 12:21:50
  • 详解java 中泛型中的类型擦除和桥方法

    2021-07-10 23:55:08
  • 永久解决idea git log乱码的问题

    2022-01-10 06:13:13
  • Java应用多机器部署解决大量定时任务问题

    2023-10-28 17:07:17
  • Java内存溢出和内存泄露

    2023-01-21 17:48:48
  • java swing实现QQ账号密码输入框

    2023-01-13 06:26:52
  • Socket通信原理和实践

    2022-07-05 02:42:31
  • Java常量池知识点总结

    2023-01-09 10:23:09
  • 关于IDEA配置文件字符集的问题

    2022-11-01 13:06:44
  • Java递归基础与递归的宏观语意实例分析

    2021-06-24 09:33:10
  • c#使用filesystemwatcher监视文件系统的变化

    2022-08-06 15:28:43
  • java实现1M图片压缩优化到100kb实现示例

    2022-08-08 03:59:43
  • 解析Java内存分配和回收策略以及MinorGC、MajorGC、FullGC

    2023-02-06 08:22:19
  • java图片滑动验证(登录验证)原理与实现方法详解

    2023-07-10 13:29:53
  • android跑马灯出现重复跳动以及不滚动问题的解决方法

    2023-07-24 00:33:48
  • asp之家 软件编程 m.aspxhome.com