草庐IT

c# - 使用三元表达式分配给可空类型时,将 null 转换为可空是否正确?

将null转换为类型对我来说感觉很奇怪,所以我想仔细检查这是否是正确的方法:decimal?d=data.isSpecified?data.Value:(decimal?)null;注意:我正在标记建议我个人最喜欢的方法的答案:decimal?d=data.isSpecified?data.Value:default(decimal?) 最佳答案 是的,没关系。备选方案:condition?(decimal?)value:nullcondition?newdecimal?(value):nullcondition?value:def

c# - 如果没有可空 DateTime 的隐式运算符,为什么 C# 隐式转换为可空 DateTime?

这是一个关于C#语言或至少该语言在VisualStudio中是如何实现的问题。假设有一个Foo类,它为System.DateTime定义了一个隐式运算符publicstaticimplicitoperatorDateTime(Fooitem)考虑以下代码:Foofoo=SomeMethodWhichCanReturnNull();DateTime?dtFoo=foo;我的期望:编译失败提示没有从Foo到DateTime?的转换。我的发现:编译器实际上调用了从Foo到DateTime的已定义隐式运算符,并在传递null(它是转换器可以响应null的唯一方式)。当然,work-around

c# - C# 中可空类型的替代方法

我正在编写适用于数字数据系列的算法,有时系列中的值需要为空。但是,由于此应用程序对性能至关重要,因此我避免使用可空类型。我对算法进行了性能测试,以专门比较使用可空类型与非可空类型的性能,在最好的情况下,可空类型的速度要慢2倍,但通常更糟。最常用的数据类型是double,目前选择的null替代方法是double.NaN。但是我知道这不是NaN值的确切预期用途,所以我不确定这是否存在我无法预见的任何问题以及最佳实践是什么。我有兴趣找出以下数据类型的最佳null替代方案,特别是:double/float、decimal、DateTime、int/long(尽管我们非常欢迎其他类型)编辑:我想

c# - 如何通过反射获取可空类型的值

我需要使用反射来检索NullableTypeofDateTime的属性值我该怎么做?当我尝试propertyInfo.GetValue(object,null)时,它不起作用。谢谢我的代码:varpropertyInfos=myClass.GetType().GetProperties();foreach(PropertyInfopropertyInfoinpropertyInfos){objectpropertyValue=propertyInfo.GetValue(myClass,null);}对于可为null的类型,propertyValue结果始终为null

c# - 为什么有些方法对可空结构的空值起作用而有些方法不起作用?

开门见山:int?i=null;i.ToString();//happyi.GetType();//nothappy我得到一个veryrelatedquestion这实际上是关于为什么i.ToString()工作正常。编辑:刚发现这个极端情况是themostvotedoneinthisSOthread! 最佳答案 是因为ToString是虚拟的,而GetType不是。Nullable在CLR中具有特殊的装箱行为。当您调用GetType在可为空的情况下,它被装箱(请参阅MSDN,实际上任何struct都会发生这种情况)。但是,对于可空

c# - 在可空类型上使用合并空运算符会更改隐式类型

我希望接下来的三行代码是相同的:publicstaticvoidTestVarCoalescing(DateTime?nullableDateTime){vardateTimeNullable1=nullableDateTime.HasValue?nullableDateTime:DateTime.Now;vardateTimeNullable2=nullableDateTime!=null?nullableDateTime:DateTime.Now;vardateTimeWhatType=nullableDateTime??DateTime.Now;}在所有情况下,我都将nullab

c# - 可空结构与类

我有一个包含两个字段的简单结构;一个存储对象,另一个存储日期时间。我这样做是因为我想将对象存储在字典中,但也带有日期时间戳。我有一个返回我的结构的方法,我现在决定该方法也应该能够返回null,所以我使我的结构可以为null。我现在想知道是否应该让我的结构成为一个类,这样它就是一个引用类型? 最佳答案 在这种情况下,是的,将您的结构设为类可能更清楚。就论证而言,您实质上是在创建一个专门的元组。有趣的是,库设计者选择制作.Net4Tuple一个类而不是一个结构。(该页面是元组创建者和各种元组实例类的链接)

c# - protobuf-net 是否支持可空类型?

是否可以在protobuf-net中生成可空成员?messageProtoBuf1{optionalInt32?databit=1;optionalNullabledatabool=2;} 最佳答案 是的,但如果您从.proto执行代码生成,默认情况下它不会生成它们。如果这只是C#,当然,您不需要.proto-只需:[ProtoContract]publicclassProgoBuf1{[ProtoMember(1)]publicint?Foo{get;set;}[ProtoMember(2)]publicfloat?Bar{get

C#,反转可空 bool 值的快速方法?

我有一个可为空的bool值。什么是反转它的快速方法。换句话说,如果值为TRUE,则将其设为FALSE,否则将其设为TRUE。澄清(来自评论):预期的行为是:如果可为null的bool值有值,则反转,否则应返回null。 最佳答案 myBool=!myBool;编辑:好的,基于对问题的深入理解(即myBool如果它为null,则表示为null),以上是最简单的答案。 关于C#,反转可空bool值的快速方法?,我们在StackOverflow上找到一个类似的问题:

c# - asmx 服务方法中的可空参数导致其他方法失败

要重现我遇到的问题,请使用VS2010创建一个空网站并添加带有代码隐藏的Web服务(asmx)。使用下面的代码,两个webmethods都可以调用成功:[WebService(Namespace="http://tempuri.org/")][WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]publicclassWebService:System.Web.Services.WebService{[WebMethod]publicvoidMethod1(intx){//i'mgood}[WebMethod]publics