C# params可變參數(shù)的使用注意詳析
今天在一個 .NET Core 項目中調(diào)用一個自己實現(xiàn)的使用 params 可變參數(shù)的方法時觸發(fā)了 null 引用異常,原以為是方法中沒有對參數(shù)進(jìn)行 null 值檢查引起的,于是加上 check null 代碼:
public static void BuildBlogPostLinks(params BlogPostDto[] blogPosts) { if (blogPosts == null) return; foreach (var blogPost in blogPosts) { //... } }
結(jié)果卻出人意料, null 引用異常繼續(xù),仔細(xì)看異常 stack 才發(fā)現(xiàn)原來 null 引用異常是在 foreach 時拋出的,需要在 foreach 時對 blogPost 進(jìn)行 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; } }
運行時的輸出結(jié)果是
$ dotnet run
blogPosts in null
blogPost in null
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。
相關(guān)文章
C# TextBox多行文本框的字?jǐn)?shù)限制問題
最近在使用C# TextBox多行文本框的時候,發(fā)現(xiàn)了其對字?jǐn)?shù)限制的一點問題,所以總結(jié)下在使用C# TextBox多行文本框要注意的的字?jǐn)?shù)限制問題,現(xiàn)在分享給大家,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-12-12C#操作Windows服務(wù)類System.ServiceProcess.ServiceBase
這篇文章介紹了C#操作Windows服務(wù)類System.ServiceProcess.ServiceBase,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05Unity的IPostBuildPlayerScriptDLLs實用案例深入解析
這篇文章主要為大家介紹了Unity的IPostBuildPlayerScriptDLLs實用案例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05將c#編寫的程序打包成應(yīng)用程序的實現(xiàn)步驟分享(安裝,卸載) 圖文
時常會寫用c#一些程序,但如何將他們和photoshop一樣的大型軟件打成一個壓縮包,以便于發(fā)布.2011-12-12