天天看點

C# 8.0 可空(Nullable)給ASP.NET Core帶來的坑Nullable reference types(可為空引用類型)在Asp.net core 使用的坑後記

這裡有個目錄

  • Nullable reference types(可為空引用類型)
    • 可為空引用類型不講武德
  • 在Asp.net core 使用的坑
    • 大意了,沒有閃
  • 後記

Nullable reference types(可為空引用類型)

可為空引用類型不講武德

C#8.0 引入了“可為空引用類型”和“不可為空引用類型”,使我們能夠對引用類型變量的屬性作出重要聲明 。

我們隻需要修改C#8的項目的檔案,添加

<Nullable>enable</Nullable>

,示例如下

<PropertyGroup>
      <TargetFramework>net5.0</TargetFramework>
      <Nullable>enable</Nullable>
  </PropertyGroup>
           

在沒增加這個類型前,代碼長這樣:

C# 8.0 可空(Nullable)給ASP.NET Core帶來的坑Nullable reference types(可為空引用類型)在Asp.net core 使用的坑後記

添加後

C# 8.0 可空(Nullable)給ASP.NET Core帶來的坑Nullable reference types(可為空引用類型)在Asp.net core 使用的坑後記

代碼就會出現警告,并且生成時也會報告提示:

C# 8.0 可空(Nullable)給ASP.NET Core帶來的坑Nullable reference types(可為空引用類型)在Asp.net core 使用的坑後記

當我們指派null給變量,也會提示

C# 8.0 可空(Nullable)給ASP.NET Core帶來的坑Nullable reference types(可為空引用類型)在Asp.net core 使用的坑後記

如果我們确定引用類型确定不為null,可以添加 感歎号 !

C# 8.0 可空(Nullable)給ASP.NET Core帶來的坑Nullable reference types(可為空引用類型)在Asp.net core 使用的坑後記

如果想讓它可空,我們隻需要修改為

string?

即可

C# 8.0 可空(Nullable)給ASP.NET Core帶來的坑Nullable reference types(可為空引用類型)在Asp.net core 使用的坑後記

其他功能參考官網

本文意不在此

在Asp.net core 使用的坑

大意了,沒有閃

這麼牛批的東西,于是我開開心心在asp.net core 5用上了

然後我就遇到了這個錯誤

C# 8.0 可空(Nullable)給ASP.NET Core帶來的坑Nullable reference types(可為空引用類型)在Asp.net core 使用的坑後記

這是一個查詢清單方法,查詢條件可以是空字元串,我也沒有設定

[Required]

,這咋就報400錯誤了捏!

經過仔細排查,發現是可為空引用類型的鍋,當開啟了可為空引用類型,

這個string 屬性就編譯成了

[Required]

,是以成功被捕捉···

解決方法1

老樣子,将屬性修改為

string?

即可。

解決方法2

如果是大範圍修改, 在ConfigureServices方法添加一下代碼,關閉不可為空引用類型的屬性即可

後記

本人不是大佬,隻是道路先行者,在落河後,向後來的人大喊一聲,這裡有坑,不要過來啊!

縱然如此,依舊有人重複着落河,重複着呐喊······

個人部落格網站 Blog

技術交流Q群: 1012481075 群内有各種流行書籍資料

文章後續會在公衆号更新,微信搜尋 OneByOneDotNet 即可關注。

你的一分鼓勵,我的十分動力,點贊免費,感恩回饋。喜歡就點贊評論吧,輕按兩下66~

繼續閱讀