C# 8.0 可空(Nullable)給ASP.NET Core帶來的坑

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

可爲空引用類型不講武德

C#8.0 引入了「可爲空引用類型」和「不可爲空引用類型」,使咱們可以對引用類型變量的屬性做出重要聲明 。微信

咱們只須要修改C#8的項目的文件,添加<Nullable>enable</Nullable>,示例以下asp.net

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

在沒增長這個類型前,代碼長這樣:
在這裏插入圖片描述
添加後
在這裏插入圖片描述網站

代碼就會出現警告,而且生成時也會報告提示:
在這裏插入圖片描述
當咱們賦值null給變量,也會提示
在這裏插入圖片描述
若是咱們肯定引用類型肯定不爲null,能夠添加 感嘆號 !
在這裏插入圖片描述ui

若是想讓它可空,咱們只須要修改成string?便可
在這裏插入圖片描述
其餘功能參考官網
本文意不在此.net

在Asp.net core 使用的坑

大意了,沒有閃

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

而後我就遇到了這個錯誤
字段是必須的
這是一個查詢列表方法,查詢條件能夠是空字符串,我也沒有設置[Required],這咋就報400錯誤了捏!xml

通過仔細排查,發現是可爲空引用類型的鍋,當開啓了可爲空引用類型,blog

這個string 屬性就編譯成了[Required],因此成功被捕捉···圖片

解決方法1
老樣子,將屬性修改成string?便可。ci

解決方法2
若是是大範圍修改, 在ConfigureServices方法添加一下代碼,關閉不可爲空引用類型的屬性便可

services.AddControllers(options => options.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes = true);

後記

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

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

我的博客網站 Blog

技術交流Q羣: 1012481075 羣內有各類流行書籍資料

文章後續會在公衆號更新,微信搜索 OneByOneDotNet 便可關注。

你的一分鼓勵,個人十分動力,點贊免費,感恩回饋。喜歡就點贊評論吧,雙擊66~

相關文章
相關標籤/搜索