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

网站开发业务ppt律师事务所 网站备案

网站开发业务ppt,律师事务所 网站备案,企业品牌网站制作,j建设网站最近VS2019正式版发布了#xff0c;装下来顺便试用了一下C#8.0#xff0c;最大的看点应该就是可空引用类型了。不过C#8.0仍然处于Beta的状态#xff0c;而且试用时也遇到了几个坑。背景知识说明#xff1a;所谓的可空引用类型是指#xff0c;一旦启用了可空引用类型这个新… 最近VS2019正式版发布了装下来顺便试用了一下C#8.0最大的看点应该就是可空引用类型了。不过C#8.0仍然处于Beta的状态而且试用时也遇到了几个坑。背景知识说明所谓的可空引用类型是指一旦启用了可空引用类型这个新特征引用类型将默认被视为不可空无法赋予null除非手工将它设为可空引用类型。实战示例首先是新建一个C#的项目在 项目文件(.csproj)里加入两行配置目的是启用“C#8.0语言”和“可空引用类型”LangVersion8.0/LangVersionNullableContextOptionsenable/NullableContextOptions整个文件看起来是这样的这样就算是整个项目全局启用了可空引用类型了。注意在VS2019正式版中使用NullableContextOptionsenable/NullableContextOptions而不是使用NullableReferenceTypestrue/NullableReferenceTypes后者在正式版中已经失效了。如果不希望全局启用可空引用类型的话可以在程序代码中加入以下编译指令这样可以在加入了该指令的文件中单独启用可空引用类型。但是极度不推荐这种做法。为什么呢因为该指令仅仅在该文件中有效不能跨文件生效从而无法阻止null逃逸到使用了该指令的文件中也就是说用了也等于没用。一个很简单的例子足以证明注意上面项目文件中并没有全局启用可空引用类型而下面的Class1.cs中使用了编译器指令来单独启用可空引用类型。从运行结果可见空引用仍然逃逸到使用了该指令的作用域中了。别说编译错误连编译警告都没有。完全达不到理想的效果。因此强烈建议在项目文件中全局启用可空引用类型而不是在某个源文件中单独使用。另外还有一点要注意的是即使启用了可空引用类型后默认情况下即使对不可空引用赋予null编译器也只会生成编译警告而不是编译错误。仍然是能够编译通过的。一个大项目中编译警告不可避免甚至可能会很多从而淹没了“给不可空引用类型赋予空值”这种不起眼的警告。因此建议将特定的警告视为错误。警告编号为8600、8625、8618、8604或者将所有警告视为错误。具体是在项目文件中加入以下设置见图一WarningsAsErrors8600 8625 8618 8604/WarningsAsErrors或者在项目编辑器中设置也可以这是我自己测试得出的结果可能还有其它潜在的相关警告编号我没有测试出来。如果有谁知道的话告诉我一下谢谢。做好这些配置之后可以看到引用类型默认都不能赋予空值了这时候普通的引用类型的变量和参数都不能设为null了。这样可以防止空值扩散开来引起恼人的空引用异常。但是这里有个坑需要注意struct里不适用可空引用的规则struct里不适用可空引用的规则struct里不适用可空引用的规则这种情况下直接运行仍然会抛出空引用异常C#8.0仍未能完全封堵住空引用的逃逸。其实我还是比较赞同用不可空引用类型的方案的而不是可空引用类型的方案。毕竟我想要的只不过是一个不可空的断言只是想利用不可空引用来划分安全边界从而防止空值的扩散。简单来说就是想将变量和参数明确声明为不可空引用类型。因为历史和现实的原因大量的库都还没能全面使用可空引用类型。这种情况下只有我使用可空引用类型是不靠谱的。无法划分安全边界。然而C#选择了可空引用类型的方案而且还不是强制启用而且默认只是警告。。跟没有一样。。。比方说我使用了一个第三方库项目而空值的来源是正好是该库项目的而我对这个库并没有源代码或者修改权限。这时候就无法阻止空值逃逸到我的项目中了。还是之前的代码只是稍微做一下修改。新增了一个库项目ClassLibrary1这个库并没有使用可空引用类型。库的代码如下很简单就是LibClass3.GetInstance()本应该返回LibClass2的实例但是出于某种原因返回了null。但是我的项目中使用了LibClass2和LibClass3。我的项目是全局启用了可空引用类型的编译正常毫无警告和错误。一旦运行则抛出空引用异常可见目前来说C#8.0的可空引用类型并不能解决外源性的空值扩散只能解决内源性的空值扩散无法跨模块生效。还是洗洗睡吧。参考资料https://docs.microsoft.com/en-us/dotnet/csharp/nullable-referenceshttps://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/nullable-types/indexhttps://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/nullable-reference-types-specification#the-null-forgiving-operatorhttps://github.com/dotnet/roslyn/blob/master/docs/features/nullable-reference-types.md#setting-project-level-nullable-contexthttps://www.youtube.com/watch?vVdC0aoa7unghttps://stackoverflow.com/questions/54852880/what-is-the-difference-between-nullablecontextoptions-and-nullablereferencetypes原文地址https://www.cnblogs.com/zlmdy/p/10656793.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://www.yutouwan.com/news/28110/

相关文章:

  • 电子商务网站 备案外链 网站权重
  • 常见的网站结构有哪些微信公众平台设计
  • 做问卷的网站好asp.net网站开发实例教程 下载
  • 某企业集团网站建设方案论文制作公司网站视频
  • 电子商务的网站案例页面设计师招聘
  • 做网站湖州网站开发小图标怎么设置
  • 机械厂做网站全媒体门户网站建设
  • 附近网站建设服务公司c 网站开发 pdf
  • 做网站用啥软件好信云科技的vps怎么做网站
  • 戚墅堰做网站咸宁网站seo排名
  • 电子商务网站建设与管理课程的目的九江网站建设哪家好
  • 厦门易尔通做网站怎么样重庆建工集团
  • 网站建设方案书 个人备案西安网站开发制作
  • 办公司流程和费用长春网站快照优化公司
  • 网页设计与制作实训报告2000字鄂州seo多少钱
  • 三明城乡建设网站最好看的直播免费的
  • 苏州网站建设姜超网上销售
  • 河南微网站建设免费制作封面的网站
  • 源码购买网站我想建网站
  • 网站原型的交互怎么做网站建设哪些职位
  • 联兴建设官方网站汕头网站建设stqhcx
  • 合肥专业做网站个人网站做公司网站
  • 深圳招聘网官方网站seo外链群发网站
  • 宁波大型网站建设上海人才中心档案托管
  • 在互易上做的网站如何修改圆通速递我做网站
  • 义乌做网站要多少钱域名购买哪个网站
  • 怎么用手机创建网页排名优化公司案例
  • 电商网站开发常用代码空压机东莞网站建设
  • 什么网站建设效果好江门网站自助建站
  • 未来 网站开发 知乎物流公司电话