使用反射来获取MethodInfo,我想测试返回的类型是否为typeof System.Void。
测试它是否为System.Int32正常工作
myMethodInfo.ReturnType == typeof(System.Int32)
但
myMethodInfo.ReturnType == typeof(System.Void)
不编译?目前我正在测试名称的字符串表示是否为“System.Void”,这似乎非常错误。
答案 0 :(得分:60)
您无法直接使用System.Void
,但可以使用typeof(void)
访问它。
有些人指出(例如here和评论here),原因是ECMA Standard 335,分区II,第9.4节说:
以下几种类型不能 在实例化中用作参数 (通用类型或方法):
- Byref类型(例如
System.Generic.Collection.List 1<string&>
无效)- 包含可指向CIL的字段的值类型 评估堆栈(例如,
List<System.RuntimeArgumentHandle>
)- void(例如,
List<System.Void>
无效)
答案 1 :(得分:18)
当我构建它时,我收到错误:
System.Void不能在C#中使用 - 使用typeof(void)来获取void类型对象
听起来就是答案......
答案 2 :(得分:0)
使用
if(methodInfo.ReturnType.Name == "Void"){
// Your Code.........
}