這裡有個目錄
- 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>
在沒增加這個類型前,代碼長這樣:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL1YjM2AzNygTM2ITMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
添加後
代碼就會出現警告,并且生成時也會報告提示:
當我們指派null給變量,也會提示
如果我們确定引用類型确定不為null,可以添加 感歎号 !
如果想讓它可空,我們隻需要修改為
string?
即可
其他功能參考官網
本文意不在此
在Asp.net core 使用的坑
大意了,沒有閃
這麼牛批的東西,于是我開開心心在asp.net core 5用上了
然後我就遇到了這個錯誤
這是一個查詢清單方法,查詢條件可以是空字元串,我也沒有設定
[Required]
,這咋就報400錯誤了捏!
經過仔細排查,發現是可為空引用類型的鍋,當開啟了可為空引用類型,
這個string 屬性就編譯成了
[Required]
,是以成功被捕捉···
解決方法1
老樣子,将屬性修改為
string?
即可。
解決方法2
如果是大範圍修改, 在ConfigureServices方法添加一下代碼,關閉不可為空引用類型的屬性即可
後記
本人不是大佬,隻是道路先行者,在落河後,向後來的人大喊一聲,這裡有坑,不要過來啊!
縱然如此,依舊有人重複着落河,重複着呐喊······
個人部落格網站 Blog
技術交流Q群: 1012481075 群内有各種流行書籍資料
文章後續會在公衆号更新,微信搜尋 OneByOneDotNet 即可關注。
你的一分鼓勵,我的十分動力,點贊免費,感恩回饋。喜歡就點贊評論吧,輕按兩下66~