caz*_*tos 12 c# typeof default-parameters
class MyClass
{
public void MyMethod(Type targetType = typeof(MyClass))
{
}
}
Run Code Online (Sandbox Code Playgroud)
不是typeof(MyClass)编译时常量?
Fel*_*oto 10
我不是IL专家,但似乎它在L_0005调用了一个方法:
return typeof(int);
Run Code Online (Sandbox Code Playgroud)
它是相同的:
.maxstack 1
.locals init (
[0] class [mscorlib]System.Type typeofvar)
L_0000: ldtoken int32
L_0005: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
L_000a: stloc.0
L_000b: ldloc.0
L_000c: ret
Run Code Online (Sandbox Code Playgroud)
您可以看到它不是一种写入类型的代码:
const Type constType = typeof(int);
Run Code Online (Sandbox Code Playgroud)
这会返回一个错误:
Constant initialize must be compile-time constant
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1724 次 |
| 最近记录: |