jjzjj

Nullable

全部标签

c# - 反射 - 检查所有可为空的属性是否有值

我必须遍历几个类中的所有属性并检查任何可为null的属性以查看它们是否具有值。如何将从propertyInfo.GetValue()返回的值转换为通用可为null的类型,以便检查HasValue属性?为简洁起见,代码被剪掉了:foreach(PropertyInfopropInfointhis.GetType().GetProperties()){if(){//Howdoicastthisproperlyinheretoallowmetodo:if(!((Nullable)propInfo.GetValue(this,null)).HasValue)//Morecodehere}}

c# - 反射 - 检查所有可为空的属性是否有值

我必须遍历几个类中的所有属性并检查任何可为null的属性以查看它们是否具有值。如何将从propertyInfo.GetValue()返回的值转换为通用可为null的类型,以便检查HasValue属性?为简洁起见,代码被剪掉了:foreach(PropertyInfopropInfointhis.GetType().GetProperties()){if(){//Howdoicastthisproperlyinheretoallowmetodo:if(!((Nullable)propInfo.GetValue(this,null)).HasValue)//Morecodehere}}

c# - 为什么 Nullable<T> HasValue 属性不会在 Null 上抛出 NullReferenceException?

考虑以下代码:DateTime?ndate=null;Console.WriteLine(ndate.HasValue);我本以为会出现NullReferenceException,但HasValue确实会返回false。但是,由于ndate为空,属性调用如何成功,因为没有对象可以调用属性HasValue呢? 最佳答案 从技术上讲,“ndate”不是null-它是一种值类型,其值指定为null。当你写DateTime?,这只是Nullable的简写,这是一个结构。从技术上讲,这不可能为null,因为它不是引用类型。

c# - 为什么 Nullable<T> HasValue 属性不会在 Null 上抛出 NullReferenceException?

考虑以下代码:DateTime?ndate=null;Console.WriteLine(ndate.HasValue);我本以为会出现NullReferenceException,但HasValue确实会返回false。但是,由于ndate为空,属性调用如何成功,因为没有对象可以调用属性HasValue呢? 最佳答案 从技术上讲,“ndate”不是null-它是一种值类型,其值指定为null。当你写DateTime?,这只是Nullable的简写,这是一个结构。从技术上讲,这不可能为null,因为它不是引用类型。

c# - 带有 Nullable<T> 的 '==' 的参数顺序

以下两个C#函数的不同之处仅在于将参数的左/右顺序交换为equals运算符==。(IsInitialized的类型是bool)。使用C#7.1和.NET4.7。staticvoidA(ISupportInitializex){if((xasISupportInitializeNotification)?.IsInitialized==true)thrownull;}staticvoidB(ISupportInitializex){if(true==(xasISupportInitializeNotification)?.IsInitialized)thrownull;}但是第二个的IL

c# - 带有 Nullable<T> 的 '==' 的参数顺序

以下两个C#函数的不同之处仅在于将参数的左/右顺序交换为equals运算符==。(IsInitialized的类型是bool)。使用C#7.1和.NET4.7。staticvoidA(ISupportInitializex){if((xasISupportInitializeNotification)?.IsInitialized==true)thrownull;}staticvoidB(ISupportInitializex){if(true==(xasISupportInitializeNotification)?.IsInitialized)thrownull;}但是第二个的IL

c# - C# 中的可选/可为空的 OUT 参数

我有一个方法有多个覆盖。在一个更扩展的覆盖中,我想返回一个OUT参数,但不是在我的更简单的覆盖中。例如:publicboolIsPossible(stringparam1,intparam2)publicboolIsPossible(stringparam1,intparam2,outboolparam3)我目前实现这一目标的方式是这样的:publicboolIsPossible(stringparam1,intparam2){booltemp;returnIsPossible(param1,param2,outtemp);}有没有更好的方法来实现这一点?我可以(或者我应该)使用可为n

c# - C# 中的可选/可为空的 OUT 参数

我有一个方法有多个覆盖。在一个更扩展的覆盖中,我想返回一个OUT参数,但不是在我的更简单的覆盖中。例如:publicboolIsPossible(stringparam1,intparam2)publicboolIsPossible(stringparam1,intparam2,outboolparam3)我目前实现这一目标的方式是这样的:publicboolIsPossible(stringparam1,intparam2){booltemp;returnIsPossible(param1,param2,outtemp);}有没有更好的方法来实现这一点?我可以(或者我应该)使用可为n

c# - C# 中具有可空类型的 += 运算符

在C#中,如果我写int?x=null;x+=x??1我希望这等同于:int?x=null;x=x+x??1因此在第一个示例中,x将包含1,就像在第二个示例中一样。但它没有,它包含空值。+=运算符在未分配时似乎不适用于可空类型。为什么会这样?编辑:如前所述,这是因为null+1=null和运算符优先级。在我的辩护中,我认为MSDN中的这一行是模棱两可的!:Thepredefinedunaryandbinaryoperatorsandanyuser-definedoperatorsthatexistforvaluetypesmayalsobeusedbynullabletypes.The

c# - C# 中具有可空类型的 += 运算符

在C#中,如果我写int?x=null;x+=x??1我希望这等同于:int?x=null;x=x+x??1因此在第一个示例中,x将包含1,就像在第二个示例中一样。但它没有,它包含空值。+=运算符在未分配时似乎不适用于可空类型。为什么会这样?编辑:如前所述,这是因为null+1=null和运算符优先级。在我的辩护中,我认为MSDN中的这一行是模棱两可的!:Thepredefinedunaryandbinaryoperatorsandanyuser-definedoperatorsthatexistforvaluetypesmayalsobeusedbynullabletypes.The