gpt4 book ai didi

c# - 委托(delegate)类型生成的CIL代码是编译时的还是运行时的?

转载 作者:太空宇宙 更新时间:2023-11-03 10:22:42 24 4
gpt4 key购买 nike

假设有一个委托(delegate)引用了两个方法 Add() 和 Sub() 。我要问的是 C# 编译器是在运行时还是在编译时生成等效的 IL 代码?

例如:

public int delegate Dele(int,int);

//methods
int Add(int a,int b)
{
//...
}
int Sub(int a,int b)
{
//...
}


//here comes the condition

if(cond)
{
Del+=Add;
}
else
{
Del+=Sub;
}

int ans=Del(4,4);

这里编译器是在编译时还是运行时为真和假条件生成cil代码?

最佳答案

引用哪个方法只有在它被调用时才被解析,即在运行时。在我们的例子中,是的,它对优化有一点贡献,因为它只被调用了一次,并且在执行路径中总是只有一个 CIL 代码。希望这就是您正在寻找的答案。

关于c# - 委托(delegate)类型生成的CIL代码是编译时的还是运行时的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32827624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com