use*_*993 5 .net c# clr cil roslyn
我一直在努力学习更多有关CLR的知识,同时注意到C#中的以下接口将被编译为包含某种"抽象接口"的IL.
鉴于在C#中将接口声明为抽象是无效的,在IL级别允许抽象接口意味着什么?最初,我想知道这是否是运行时内部表示接口的方式,通过声明一个抽象类从而防止它被新增.
它似乎确实遵循了这个想法,如图所示.class
.但是,接下来是interface
.因此,当运行时似乎支持接口的概念时,需要实际创建抽象类的想法似乎没有实际意义.
这引出了几个问题:
.class
和 interface
必要的,这是为什么有效的IL水平?.class
还是abstract
需要?C#:
public interface IExample
{
void SomeMethod(int number);
}
Run Code Online (Sandbox Code Playgroud)
IL:
.class interface public auto ansi abstract IExample
{
// Methods
.method public hidebysig newslot abstract virtual
instance void SomeMethod (
int32 number
) cil managed
{
} // end of method IExample::SomeMethod
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
190 次 |
最近记录: |