How to test if MethodInfo.ReturnType is type of System.Void?
c#, methodinfo, reflection
Solution
You can't use `System.Void` directly, but can access it using `typeof(void)`.
Several people point out (here and in the comments here for example) that the reason for this is that the ECMA Standard 335, Partition II, section 9.4 says:
The following kinds of type cannot be used as arguments in instantiations (of generic types or methods):
- Byref types (e.g., `System.Generic.Collection.List 1<string&>` is invalid)
- Value types that contain fields that can point into the CIL evaluation stack (e.g.,`List<System.RuntimeArgumentHandle>`)
- void (e.g., `List<System.Void>` is invalid)
Problem
Using reflection to obtain a MethodInfo, I want to test if the type returned is typeof System.Void. Testing if it is System.Int32 works fine ``` myMethodInfo.ReturnType == typeof(System.Int32) ``` but ``` myMethodInfo.ReturnType == typeof(System.Void) ``` does not compile? At present Im testing if the string representation of the name is "System.Void" which seems very wrong.