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

微信网站开发公司电话廊坊森德科技有限公司

微信网站开发公司电话,廊坊森德科技有限公司,wordpress怎么插视频,xjr快速开发平台我一直使用Nullable.HasValue因为我喜欢这种语义。 但是#xff0c;最近我正在开发其他人的现有代码库#xff0c;其中他们专门使用Nullable ! null 。是否有理由优先使用一个#xff0c;还是纯粹是偏爱#xff1f;int? a; if (a.HasValue) // ...与int?…我一直使用Nullable.HasValue因为我喜欢这种语义。 但是最近我正在开发其他人的现有代码库其中他们专门使用Nullable ! null 。是否有理由优先使用一个还是纯粹是偏爱int? a; if (a.HasValue) // ...与int? b; if (b ! null) // ...#1楼我更喜欢(a ! null)以便语法与引用类型匹配。#2楼我通过使用不同的方法将值分配给可为null的int进行了一些研究。 这是我做各种事情时发生的事情。 应该澄清发生了什么。 请记住 Nullable还是速记的something? 是一种结构编译器似乎为此进行了大量工作让我们将null当作类使用。如下所示 SomeNullable null和SomeNullable.HasValue将始终返回预期的true或false。 尽管下面没有演示 SomeNullable 3也有效(假设SomeNullable是int? )。虽然SomeNullable.Value会让我们运行时错误如果我们分配null给SomeNullable 。 实际上由于重载运算符重载object.Equals(obj)方法以及编译器优化和猴子业务的结合这是唯一可能导致可为空的问题引起我们问题的情况。这是我运行的一些代码的描述以及它在标签中产生的输出int? val null;lbl_Val.Text val.ToString(); //Produced an empty string.lbl_ValVal.Text val.Value.ToString(); //Produced a runtime error. (Nullable object must have a value.)lbl_ValEqNull.Text (val null).ToString(); //Produced True (without the quotes)lbl_ValNEqNull.Text (val ! null).ToString(); //Produced Falselbl_ValHasVal.Text val.HasValue.ToString(); //Produced Falselbl_NValHasVal.Text (!(val.HasValue)).ToString(); //Produced Truelbl_ValValEqNull.Text (val.Value null).ToString(); //Produced a runtime error. (Nullable object must have a value.)lbl_ValValNEqNull.Text (val.Value ! null).ToString(); //Produced a runtime error. (Nullable object must have a value.)好的让我们尝试下一个初始化方法int? val new int?();lbl_Val.Text val.ToString(); //Produced an empty string.lbl_ValVal.Text val.Value.ToString(); //Produced a runtime error. (Nullable object must have a value.)lbl_ValEqNull.Text (val null).ToString(); //Produced True (without the quotes)lbl_ValNEqNull.Text (val ! null).ToString(); //Produced Falselbl_ValHasVal.Text val.HasValue.ToString(); //Produced Falselbl_NValHasVal.Text (!(val.HasValue)).ToString(); //Produced Truelbl_ValValEqNull.Text (val.Value null).ToString(); //Produced a runtime error. (Nullable object must have a value.)lbl_ValValNEqNull.Text (val.Value ! null).ToString(); //Produced a runtime error. (Nullable object must have a value.)和以前一样。 请记住用int? val new int?(null);初始化int? val new int?(null); int? val new int?(null); 如果将null传递给构造函数则会产生COMPILE时间错误因为可为空的对象的VALUE不可为空。 只有包装对象本身可以等于null。同样我们将从以下位置获得编译时错误int? val new int?();val.Value null;更不用说val.Value还是一个只读属性这意味着我们甚至不能使用以下内容val.Value 3;但是同样多态重载的隐式转换运算符使我们能够val 3;只要它能正常工作就不用担心杂乱的东西。 :)#3楼在VB.Net中。 当可以使用“ .HasValue”时请勿使用“ IsNot Nothing”。 我刚刚解决了“操作可能破坏运行时的稳定性”的中等信任错误方法是将“ IsNot Nothing”替换为“ .HasValue”。 我真的不明白为什么但是编译器中发生的事情有所不同。 我认为C中的“ null”可能有相同的问题。#4楼一般答案和经验法则如果您有一个选择(例如编写自定义序列化程序)可以在与object不同的管道中处理Nullable并使用其特定的属性则可以这样做并使用Nullable的特定属性。 因此从一致的观点来看应首选HasValue 。 一致的想法可以帮助您编写更好的代码而不必花费太多时间在细节上。 例如第二种方法会有效很多倍(主要是因为编译器内联和装箱但是数字仍然非常有表现力)public static bool CheckObjectImpl(object o){return o ! null;}public static bool CheckNullableImpl(T? o) where T: struct{return o.HasValue;}基准测试BenchmarkDotNetv0.10.5, OSWindows 10.0.14393ProcessorIntel Core i5-2500K CPU 3.30GHz (Sandy Bridge), ProcessorCount4Frequency3233539 Hz, Resolution309.2587 ns, TimerTSC[Host] : Clr 4.0.30319.42000, 64bit RyuJIT-v4.6.1648.0Clr : Clr 4.0.30319.42000, 64bit RyuJIT-v4.6.1648.0Core : .NET Core 4.6.25009.03, 64bit RyuJITMethod | Job | Runtime | Mean | Error | StdDev | Min | Max | Median | Rank | Gen 0 | Allocated |-------------- |----- |-------- |-----------:|----------:|----------:|-----------:|-----------:|-----------:|-----:|-------:|----------:|CheckObject | Clr | Clr | 80.6416 ns | 1.1983 ns | 1.0622 ns | 79.5528 ns | 83.0417 ns | 80.1797 ns | 3 | 0.0060 | 24 B |CheckNullable | Clr | Clr | 0.0029 ns | 0.0088 ns | 0.0082 ns | 0.0000 ns | 0.0315 ns | 0.0000 ns | 1 | - | 0 B |CheckObject | Core | Core | 77.2614 ns | 0.5703 ns | 0.4763 ns | 76.4205 ns | 77.9400 ns | 77.3586 ns | 2 | 0.0060 | 24 B |CheckNullable | Core | Core | 0.0007 ns | 0.0021 ns | 0.0016 ns | 0.0000 ns | 0.0054 ns | 0.0000 ns | 1 | - | 0 B |基准代码public class BenchmarkNullableCheck{static int? x (new Random()).Next();public static bool CheckObjectImpl(object o){return o ! null;}public static bool CheckNullableImpl(T? o) where T: struct{return o.HasValue;}[Benchmark]public bool CheckObject(){return CheckObjectImpl(x);}[Benchmark]public bool CheckNullable(){return CheckNullableImpl(x);}}PS 。 人们说建议“由于始终如一的想法而首选HasValue”是无关的和无用的。 您可以预测其性能吗public static bool CheckNullableGenericImpl(T? t) where T: struct{return t ! null; // or t.HasValue?}PPS人们继续CheckNullableGenericImpl但没有人试图预测CheckNullableGenericImpl性能。 而且那里的编译器不会帮助您用HasValue替换!null 。 如果您对性能感兴趣则应直接使用HasValue 。#5楼如果您使用linq并希望使代码简短我建议始终使用!null这就是为什么假设我们有一些带有可为空的双变量SomeDouble Foo类public class Foo{public double? SomeDouble;//some other properties}如果我们想在代码中的某个地方从Foo集合中获取所有具有非null SomeDouble值的Foo(假设该集合中的某些foos也可以为null)那么我们将以至少三种方式编写函数(如果我们使用C6)public IEnumerable GetNonNullFoosWithSomeDoubleValues(IEnumerable foos){return foos.Where(foo foo?.SomeDouble ! null);return foos.Where(foofoo?.SomeDouble.HasValue); // compile time errorreturn foos.Where(foofoo?.SomeDouble.HasValue true);return foos.Where(foofoo ! null foo.SomeDouble.HasValue); //if we dont use C#6}在这种情况下我建议总是选择较短的
http://wiki.neutronadmin.com/news/298084/

相关文章:

  • 郑州做网站kuihuakeji腾讯与中国联通
  • 杭州专业做网站公司网站打开
  • 911制作网站如何进网站
  • 网站如何排名做新媒体应该关注什么网站
  • 广东贸易网站建设投资公司成立条件
  • 温州通业建设工程有限公司网站wordpress缩略图不清晰怎么办
  • 网站建设 58同城小程序发布流程怎么弄
  • 公司做网站应记入哪个会计科目商丘哪里做网站比较好
  • 一个新的网站怎么做优化推广普通话调查问卷
  • 有了域名如何做网站北京工程建设交易信息网站
  • 公司网站建设济南凡科建站容易吗
  • 做网站怎么插音频怎么开通网站
  • 网站设计师工作内容chinaz站长素材
  • 贵州便宜网站推广优化电话深圳工程交易服务网
  • 网站管理功能图网站开发设计进度表
  • wordpress自定义面板百度seo学院
  • 不用wordpress建站安卓手机怎么制作网站
  • 租赁服务器的网站公司网站做一年多少钱
  • 网站ui设计收费汕尾英文网站建设
  • 做网站最简单的wordpress管理网址
  • 什么网站可以做ui小动画途牛电子商务网站建设
  • 服装企业官方网站宁波有哪些公司做网站
  • wap 网站谁做的四虎网站是多少
  • 官方网站怎样做旅游网站开发的需求分析
  • 橱柜网站建设公司汽车是怎么做的视频网站
  • 东莞网站建设php方案网站建设2017排名
  • 头像设计制作网站石家庄做网站最好的公司
  • 能够做外贸的网站有哪些织梦手机网站教程
  • 口碑好的天津网站建设公司介绍简历模板
  • led网站模板危险网站怎么解除