当前位置: 首页 > news >正文

建设工商联网站的意义高端品牌网站建设需要注意什么

建设工商联网站的意义,高端品牌网站建设需要注意什么,学电脑在哪里报名,点了网站域名会跳转C# 11 中的参数 null 检查IntroC# 11 将引入一个新的操作符 !! 来简化我们代码中的对于参数的 null 检查#xff0c;昨天发布的 .NET 7 Preview 1 已经支持了这一语法#xff0c;感兴趣的不妨来试一下吧#xff0c;下面我们就来看一下如何使用吧Prepare如果你想在本地代码中… C# 11 中的参数 null 检查IntroC# 11 将引入一个新的操作符 !! 来简化我们代码中的对于参数的 null 检查昨天发布的 .NET 7 Preview 1 已经支持了这一语法感兴趣的不妨来试一下吧下面我们就来看一下如何使用吧Prepare如果你想在本地代码中进行编译测试需要安装 .NET 7 Preview 1 的 SDK下载地址然后在本地创建一个控制台应用程序可以通过命令 dotnet new console 来创建创建成功之后手动修改项目文件配置 C# 语言版本为 preview如下所示添加 LangVersionpreview/LangVersionProject SdkMicrosoft.NET.SdkPropertyGroupOutputTypeExe/OutputTypeTargetFrameworknet7.0/TargetFramework    ImplicitUsingsenable/ImplicitUsingsNullableenable/NullableLangVersionpreview/LangVersion/PropertyGroup/ProjectSample!! 是一个新的操作符加在参数后面编译器会自动生成一段 null 检查的代码bang-bang operator下面我们就来试一下吧测试代码如下Hello(World);try {Hello(null!); } catch (Exception ex) {Console.WriteLine(ex); }void Hello(string name!!) {Console.WriteLine($Hello, {name}!); }运行 dotnet run 来执行代码可以看到类似下面的输出结果output可以看到当传了一个 null 的时候会抛出一个 ArgumentNullException 的异常说明确实是做了 null 检查的这个操作符不仅仅适用于方法参数也可以用于委托参数、索引器等Whats inside从上面的输出结果我们可以看到有做 null 检查实际是什么样子的呢我们可以反编译一下代码来看一下实际生成的代码是怎么样的反编译的结果如下Program 类型和 Main 方法 是由编译器自动生成的这是 C# 9 引入的顶级语句 (Top-Level Statements)可以看到我们代码中的 Hello 方法没有了有一个编译器生成的另外一个方法它是我们原来方法的变形只增加了一句代码PrivateImplementationDetails.ThrowIfNull(name, name);我们再看一下其中的实现实现如下PrivateImplementationDetails可以看到在这里实现了 null 检查如果参数是 null 就会抛出 ArgumentNullException 异常看到这里相信大家都知道是怎么实现的了那么有个问题可以思考一下这里我们使用了一个方法如果有两个这样的方法会是什么样的呢PrivateImplementationDetails 这个类会生成两个吗我们来尝试一下我们把这个方法拷贝一下改个名字再来反编译一下void Hello1(string name!!)  Console.WriteLine($Hello, {name}!);反编译结果如下可以看到实际是调用的同一个方法PrivateImplementationDetails 这个类型只生成了一次那如果这两个方法是在两个项目中会怎么样呢可以自己动手试一下~~More这个操作符使用时还有一些注意事项如果你启用了可空引用类型并将参数声明为可空的引用类型编译器会产生一个警告因为实际上是不应该为 null 的为 null 就会抛异常所以编译器会警告示例如下// warning CS8995: Nullable type string? is null-checked and will throw if null. // void Hello2(string? name!!)  Console.WriteLine($Hello, {name}!);值类型是不能使用这个操作符的因为值类型是不会为 null 的编译器会直接报错但可空值类型是可以的例如// error CS8992: Parameter int is a non-nullable value type and cannot be null-checked. // void Hello3(int name!!)  Console.WriteLine($Hello, {name}!);另外 out 参数也不能使用这个操作符如// error CS8994: out parameter name cannot be null-checked. // void Hello4(out string name!!)  name  World;想要尝试的小伙伴可以装一下 .NET 7 preview 1 来体验如果不想装 preview 也可以通过 一个在线网站 sharplab https://sharplab.io/ 来体验编译器的新特性.NET runtime 中的代码已经用上了这个新的操作符来简化参数的 null 检查可以参考https://github.com/dotnet/runtime/pull/64720Referenceshttps://github.com/dotnet/csharplang/blob/c7361547c0c00e0116f6e4ac3767d7b6bc7442b6/proposals/param-nullchecking.mdhttps://github.com/dotnet/runtime/pull/64720https://github.com/WeihanLi/SamplesInPractice/tree/master/CSharp11Sample
http://wiki.neutronadmin.com/news/120846/

相关文章:

  • 台前做网站的公司深圳h5网站制作
  • 龙江手机网站建设wordpress微博登陆插件
  • 外贸网站seowordpress newcon
  • 海外做淘宝网站网络工程师职业分析
  • 设计网站做多大合适茶叶响应式网站
  • 深圳网站建设延安手机网上银行
  • 东莞做网站做什么赚钱珠海网站制作服务
  • dedecms生成xml网站地图百度云网站建设教程
  • 网页设计新手制作的网站代码免费安全
  • 网站建设中的功能短网址生成器 python
  • 黄埔网站开发一般网站建设需求有哪些
  • 爱站网站长工具广州注册公司程序
  • 网站建设后期石家庄新闻综合频道在线直播回放
  • 给企业做网站的公司西安浙江临海市建设局网站
  • 阿里云做网站买什么软件石家庄网站建设推广公司电话
  • 食品营销网站建设调查问卷网站建设陆金手指下拉贰拾
  • 自做闪图网站广州新公司注册流程及费用
  • 相册网站开发什么是响应式网页
  • 做网站租服务器多少钱往届生做网站编辑
  • 网站制作公司 深圳wordpress忘记了密码忘记
  • 东莞网站设计公司哪家好花生棒 wordpress
  • 怎么找网站的根目录免费网站模板怎么用
  • 辽宁海星建设集团有限公司网站学历提升销售好做吗
  • 化妆品成品网站上海网站建设seo
  • 浮梁网站建设站酷网官网网址
  • 保定网站建设培训班制作企业网站的app
  • 不懂代码怎么做网站有了域名之后怎么做网站
  • 谷歌网站为什么打不开上海做兼职上哪个网站
  • 做外贸仿牌网站wordpress怎么破解
  • 做网站和小程序的区别摄影网页设计方案