首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.NET CIL Call或CallVirt?

.NET CIL Call和CallVirt是两种不同的方法,它们都是用于在.NET程序中调用函数或方法。

CIL Call是一种在.NET程序中直接调用函数或方法的方式。它使用.NET的Common Intermediate Language(CIL)代码来调用函数或方法,可以在.NET程序中直接使用。

CallVirt是一种在.NET程序中调用函数或方法的方式,它是一种更灵活的方式,可以跨进程和跨线程进行调用。它使用CallVirt指令来调用函数或方法,并且需要指定方法的路由,即指定在哪个类中调用哪个方法。

总的来说,CIL Call和CallVirt都是用于在.NET程序中调用函数或方法的方式,它们有着不同的使用方式和适用场景,具体使用哪种方式需要根据程序的具体需求来决定。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

dotnet 5 从 IL 层面分析协变返回类型新特性

在 C# 9.0 里面添加的一个新特性是支持协变返回类型,也就说子类重写了基类的抽象虚拟方法,可以在返回值里面返回协变的类型,也就是返回值的类型可以是继承原本子类返回值类型的子类。...dotnet 5.0 的运行时才能提供的功能就说 C# 和 .NET 绑定。...准确来说是 C# 9.0 语法里面的有一些新的特性需要在新的运行时和框架下才能使用起来,此部分新特性将需要 .NET 5.0 的支持,其他的部分只需要编译器支持就可以,依然可以在旧版本的 .NET 运行...这是一个不错的特性,可惜在 .NET Framework 下是用不了的,因为需要 CLR 运行时和框架的支持 上面开源,可以在 github gitee 下载全部代码 先从 IL 的层面来聊聊这个新特性的不同...This is to ensure that if we use the signature of one of // the base type methods to call the overriding

31720

30分钟?不需要,轻松读懂IL

到底有没有卵用呢,暂且也不说什么学了可以看看一些语法糖的实现,对.net理解更深一点这些虚头巴脑的东西。最重要的理由就是一个:当面试官看你简历上写着精通C#时,问你一句: "懂不懂IL?"...Callvirt 对对象调用后期绑定方法,并且将返回值推送到计算堆栈上。...强调一下,有三种call,用的场景不太一样: Call:常用于调用编译时就确定的方法,可以直接去元数据里找方法,如静态函数,实例方法,也可以call虚方法,不过只是call这个类型本身的虚方法,和实例的方法性质一样...Callvirt: 可以调用实例方法和虚方法,调用虚方法时以多态方式调用,不能调用静态方法。...Callvirt调用时会做null检测,如果实例是null,会抛出NullReferenceException,所以速度上比call慢点。

70570

理解C#泛型运作原理

T 'value') cil managed { // 代码大小 69 (0x45) .maxstack 3 .locals init (bool V_0) IL_0000...T>::_size IL_001c: ldc.i4.1 IL_001d: add IL_001e: call instance void class MetaTest.ArrayExpandable...delegate InterfaceMenthod:this is a interfaceMthod 重载+运算符:Foo`2 我们通过例子可以看到的是: 类(结构也可以),接口,委托,方法都可以声明一个多个类型参数...运算符只能引入类声明的类型参数,不能够声明,唯有方法这一函数成员具备声明和引用类型参数两种功能,由于具备声明功能,因此可以声明和委托一样的类型参数并且引用它,这也体现了方法的多态性 多态的继承 父类和实现类接口的接口都可以是实例化类型...string>(); lsStr.Add("ryzen"); } 然后通过ildasm查看其IL,开启视图-》显示标记值,查看Main方法: void Main(string[] args) cil

67200
领券