zoukankan      html  css  js  c++  java
  • C# 8.0 可空(Nullable)给ASP.NET Core带来的坑

    Nullable reference types(可为空引用类型)

    可为空引用类型不讲武德

    C#8.0 引入了“可为空引用类型”和“不可为空引用类型”,使我们能够对引用类型变量的属性作出重要声明 。

    我们只需要修改C#8的项目的文件,添加<Nullable>enable</Nullable>,示例如下

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

    在没增加这个类型前,代码长这样:
    在这里插入图片描述
    添加后
    在这里插入图片描述

    代码就会出现警告,并且生成时也会报告提示:
    在这里插入图片描述
    当我们赋值null给变量,也会提示
    在这里插入图片描述
    如果我们确定引用类型确定不为null,可以添加 感叹号 !
    在这里插入图片描述

    如果想让它可空,我们只需要修改为string?即可
    在这里插入图片描述
    其他功能参考官网
    本文意不在此

    在Asp.net core 使用的坑

    大意了,没有闪

    这么牛批的东西,于是我开开心心在asp.net core 5用上了

    然后我就遇到了这个错误
    字段是必须的
    这是一个查询列表方法,查询条件可以是空字符串,我也没有设置[Required],这咋就报400错误了捏!

    经过仔细排查,发现是可为空引用类型的锅,当开启了可为空引用类型,

    这个string 属性就编译成了[Required],所以成功被捕捉···

    解决方法1
    老样子,将属性修改为string?即可。

    解决方法2
    如果是大范围修改, 在ConfigureServices方法添加一下代码,关闭不可为空引用类型的属性即可

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

    后记

    本人不是大佬,只是道路先行者,在落河后,向后来的人大喊一声,这里有坑,不要过来啊!

    纵然如此,依旧有人重复着落河,重复着呐喊······

    个人博客网站 Blog

    技术交流Q群: 1012481075 群内有各种流行书籍资料

    文章后续会在公众号更新,微信搜索 OneByOneDotNet 即可关注。

    你的一分鼓励,我的十分动力,点赞免费,感恩回馈。喜欢就点赞评论吧,双击66~

  • 相关阅读:
    《20171122-构建之法:现代软件工程-阅读笔记》
    课后作业-阅读任务-阅读提问-5
    结队-贪吃蛇-项目进度
    《团队-爬取豆瓣Top250电影-团队-阶段互评》
    zip相关知识梳理(一)
    C++入职学习篇--代码规范(持续更新)
    C++入职学习篇--新员工入职(持续更新)
    Node.js学习之TCP/IP数据通讯
    Node.js之操作文件系统(二)
    Node.js之操作文件系统(一)
  • 原文地址:https://www.cnblogs.com/ma-nong01/p/14331997.html
Copyright © 2011-2022 走看看