【C#】合理使用DeepSeek相关AI应用为我们提供强有力的开发工具,在.net core 6.0框架下使用JsonNode动态解析json字符串,如何正确使用单问号和双问号做好空值处理

06-01 350阅读

🌹欢迎来到《小5讲堂》🌹

🌹这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。🌹

🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!🌹

【C#】合理使用DeepSeek相关AI应用为我们提供强有力的开发工具,在.net core 6.0框架下使用JsonNode动态解析json字符串,如何正确使用单问号和双问号做好空值处理

目录

  • 前言
  • 案例
  • DeepSeek讲解
    • 单问号
    • 双问号
    • 小数点
    • 总结对比:
    • 代码示例:
    • 动态解析json
    • 相关文章

      前言

      随着大模型的不断迭代更新,依托大模型的AI应用也越来越强大,这在各个行业内都有不少担忧,毕竟AI人工智能确实给各行各业都带来了前所未有的提效,省去了很多人工成本。

      对于IT圈,很多人也担心AI应用会替代程序员,因为AI应用生成的代码质量又高又快。

      但是呢,博主觉得一时半会影响不大,TA只会成为程序员更高效的辅助工具,更加集中式地获取代码等解决方法。以前我们获取代码解决方案都是依靠各类搜索引擎,而且还需要自己挑选和甄别,相对AI来说,TA给出的是一份最佳答案,省去我们去挑选的时间。

      本篇文章讲到的动态解析Json字符串对象就是借助DeepSeek快速获取代码,还能进行同类方式方法对比,这对于以前来说完全不敢想,不得不为大模型点赞!

      案例

      可能为null

      直接上例子,对于博主来说有点代码洁癖,哈哈哈~~~

      博主不允许自己代码存在有任何看起来有点瑕疵的地方,看到哦这个波浪线,就可以知道,这里给出了友好提示:item可能在此处为null,在一定场景下,这段代码很有可能会报错的。

      string articleUrl = item["url"]?.GetValue() ?? string.Empty;
      

      【C#】合理使用DeepSeek相关AI应用为我们提供强有力的开发工具,在.net core 6.0框架下使用JsonNode动态解析json字符串,如何正确使用单问号和双问号做好空值处理

      解决方法

      在item后面加多一个?号运算符。

      string articleUrl = item?["url"]?.GetValue() ?? string.Empty;
      

      【C#】合理使用DeepSeek相关AI应用为我们提供强有力的开发工具,在.net core 6.0框架下使用JsonNode动态解析json字符串,如何正确使用单问号和双问号做好空值处理

      【C#】合理使用DeepSeek相关AI应用为我们提供强有力的开发工具,在.net core 6.0框架下使用JsonNode动态解析json字符串,如何正确使用单问号和双问号做好空值处理

      DeepSeek讲解

      在C#中,?.、?? 和小数点 (.) 是常见的运算符,分别有不同的含义。

      下面详细解释它们的用途:


      单问号

      1. 单个问号 (?.):空条件运算符(Null-conditional operator)
        • 作用:用于安全地访问可能为 null 的对象成员(属性、方法、索引器等)。

        • 行为:

          • 如果左边的对象是 null,则整个表达式返回 null,不会继续执行右边的操作。
          • 如果左边的对象不是 null,则正常访问右边的成员。
          • 示例:

            string name = person?.Name;
            
            • 如果 person 是 null,则 name 为 null。
            • 如果 person 不是 null,则 name 为 person.Name 的值。
            • 在代码中的应用:

              item?["url"]?.GetValue()
              
              • 如果 item 是 null,则整个表达式返回 null。
              • 如果 item 不是 null,则继续访问 item["url"]。
              • 如果 item["url"] 是 null,则返回 null。
              • 如果 item["url"] 不是 null,则调用 GetValue()。

      双问号

      1. 双问号 (??):空合并运算符(Null-coalescing operator)
        • 作用:用于为可能为 null 的表达式提供一个默认值。

        • 行为:

          • 如果左边的表达式不是 null,则返回左边的值。
          • 如果左边的表达式是 null,则返回右边的值。
          • 示例:

            string name = person?.Name ?? "Unknown";
            
            • 如果 person 是 null 或 person.Name 是 null,则 name 为 "Unknown"。
            • 如果 person.Name 不是 null,则 name 为 person.Name 的值。
            • 在代码中的应用:

              item?["url"]?.GetValue() ?? string.Empty
              
              • 如果 item?["url"]?.GetValue() 是 null,则返回 string.Empty。
              • 如果 item?["url"]?.GetValue() 不是 null,则返回其值。

      小数点

      1. 小数点 (.):成员访问运算符(Member access operator)
        • 作用:用于访问对象的成员(属性、方法、字段等)。

        • 行为:

          • 通过小数点访问对象的成员。
          • 如果对象是 null,则会抛出 NullReferenceException。
          • 示例:

            string name = person.Name;
            
            • 如果 person 是 null,则会抛出 NullReferenceException。
            • 如果 person 不是 null,则返回 person.Name 的值。
            • 在代码中的应用:

              item["url"].GetValue()
              
              • 如果 item 是 null,则会抛出 NullReferenceException。
              • 如果 item["url"] 是 null,则调用 GetValue() 时可能会抛出异常(取决于 GetValue 的实现)。

      总结对比:

      运算符名称作用示例
      ?.空条件运算符安全访问可能为 null 的对象的成员,避免 NullReferenceException。person?.Name
      ??空合并运算符为可能为 null 的表达式提供默认值。person?.Name ?? "Unknown"
      .成员访问运算符访问对象的成员,如果对象为 null 则抛出异常。person.Name

      代码示例:

      string url = item?["url"]?.GetValue() ?? string.Empty;
      
      • 解释:
        1. item?["url"]:如果 item 是 null,则返回 null;否则访问 item["url"]。
        2. ?.GetValue():如果 item["url"] 是 null,则返回 null;否则调用 GetValue()。
        3. ?? string.Empty:如果前面的表达式是 null,则返回 string.Empty;否则返回前面的值。

        这样,代码可以安全地处理 item 为 null 或 item["url"] 为 null 的情况,而不会抛出异常。

        动态解析json

        当你不确定你的json字符串是什么参数时,或者参数会动态变化时,使用动态解析json是一个不错的解决方案。

        博主本次这里使用的就是JsonNode类(推荐,因为可以直接转对应数据类型),同类型的还有JObect类(个人感觉这个不太好用,哈哈哈~~~)

        相关文章

        【C#】合理使用DeepSeek相关AI应用为我们提供强有力的开发工具,在.net core 6.0框架下使用JsonNode动态解析json字符串,如何正确使用单问号和双问号做好空值处理

        【C#】已经实体类和动态实体类的反射使用方法,两分钟回顾,码上就懂

        【C#】使用vue3的axios发起get和post请求.net framework部署的API显示跨域

        【C#】.net core 6.0 webapi 使用core版本的NPOI的Excel读取数据以及保存数据

        【C#】pdf按页分割文件,以及分页合并,效果还不错,你值得拥有

        【C#】未能加载文件或程序集“CefSharp.Core.Runtime.dll”或它的某一个依赖项。找不到指定的模块。

        【C#】.net core 6.0 在program时间格式统一json格式化,并列举program默认写法和简化写法

        【C#】.net core 6.0 ApiController,API控制器方法,API接口以实体类作为接收参数应该注意的点

        【C#】 SortedDictionary,查找字典中是否存在给定的关键字

        【C#】.net core 6.0 MVC返回JsonResult显示API接口返回值不可被JSON反序列化

        【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件详细说明

        【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),代码实现篇

        【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),流程描述篇

        【C#】约瑟夫原理举例2个代码实现

        【C#】List泛型数据集如何循环移动,最后一位移动到第一位,以此类推

        【C#】获取文本中的链接,通过正则表达式的方法获取以及优化兼容多种格式

        温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀博主,可查看博主个人中心查看信息。

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码