如果我有MemberInfo
是一个可为空的类型,我如何确定它是否已被赋值?如何检查一个可为空的类型是否有MemberInfo的值
-1
A
回答
2
MemberInfo
没有获得增值的手段,为MemberInfo
可以参考的方法,属性或字段。它们中的每一个都有自己的类型,它们分别从MemberInfo
继承,它们分别是MethodInfo
,PropertyInfo
和FieldInfo
。每种类型都有其自身从目标实例获得的值(我将使用一个名为instance
变量引用实例中的问题)的方式:
MethodInfo
- 要调用的函数,并获得回报值,请致电object value = methodInfo.Invoke(instance, parameters)
。有关parameters
应该是什么的信息,请参阅链接页面。PropertyInfo
- 要获取房产的价值,请致电object value = propertyInfo.GetValue(instance, indexer)
。有关indexer
应该是什么的信息,请参阅链接页面。FieldInfo
- 要获得字段的值,请致电object value = fieldInfo.GetValue(instance)
。
TL;下面 DR版本:要检查值为空,只是这样做:
if (value == null)
{
...
}
一旦你从调用上述适当的方法的价值,你可以使用用于比较目的。当Nullable<T>
被装箱时,特殊规则适用;当“空”值为Nullable<T>
时,则返回实际的空引用。当一个非空Nullable<T>
被装箱时,底层值就是装箱的东西(换句话说,Nullable<T>
的实例永远不会实际装箱)。这个例子可以使它更清晰一点:
int? foo = 10;
int? bar = null;
int baz = 10;
object value;
value = foo; // The integer 10 is boxed and placed on the heap
value = bar; // Nothing is boxed and value is set to null
value = baz; // The integer 10 is boxed and placed on the heap
因为这些特殊的规则,你可以比较其对null
,看它是否是一个空值,可以直接转换为基本类型(这将导致一个运行时异常,如果它为空或不是那种类型的),或者你可以做一个有条件的投回空类型,它会给你回你的空值:
if (value == null)
{
...
}
或
int val = (int)value;
或
int? val = value as int?;
+0
+1以确保完整性 –
1
假设你MemberInfo
是PropertyInfo
PropertyInfo prop = ...
object value = prop.GetValue(instance, null);
if (value != null)
{
...
}
相关问题
- 1. 如何检查一个对象是否为类c的类型?
- 2. 如何检查一个类是否为MVC中的模型类
- 3. 检查一个值是否为空
- 4. 创建一个类来检查sqlserver中的值是否为空
- 5. 检查VARRAY类型是否为空
- 6. 如何检查一个类是否为java.lang.Number类型
- 7. 如何检查DataReader值是否为空?
- 8. 如何检查泛型类型参数是否为空?
- 9. 我该如何检查一个可为空的整数数组是否为空?
- 10. VB.NET:检查变量是否为Guid? (可为空)类型
- 11. 检查是否有空值
- 12. 如何检查一个类obj是否为空
- 13. 检查特定类型的所有文本框是否为空
- 14. 如何检查golang中的iota类型值是否为常量?
- 15. 如何检查具有键和值的数组是否为空
- 16. 如何检查一个实例是否为枚举类型
- 17. 如何检查两个FK中的一个是否为空?
- 18. 我可以用MemberInfo检查成员是否是委托人?
- 19. 如何检查数组中的每个值是否为空?
- 20. 检查一个类是否具有关联的基元类型
- 21. 如何检查类型是否是Python中的某个类型的子类型?
- 22. 如何检查所有类型的输入是否为空或不使用jQuery?
- 23. jQuery - 你可以检查一个类是否有另一个类?
- 24. 如何判断MemberInfo是否为内部
- 25. 检查一个变量是否为空
- 26. 检查一个NSMutableDictionary是否为空?
- 27. 检查一个表是否为空
- 28. 检查一个BSTR是否为空
- 29. 检查一个对象是否为空
- 30. 如何检查一个文件输入类型是否有价值?
请详细说明......你有什么试过的?什么不起作用?任何错误消息/异常?请出示一些代码... – Yahia