C# 接口的IL代码

C# 接口的IL代码,c#,.net,interface,linqpad,C#,.net,Interface,Linqpad,我正在使用LinqPad,我正在查看为以下接口生成的IL代码(编译器优化已打开)&实现该接口的类: public interface IStockService { [OperationContract] double GetPrice(string ticker); } public class StockService : IStockService { public double GetPrice(string ticker) { retu

我正在使用LinqPad,我正在查看为以下接口生成的IL代码(编译器优化已打开)&实现该接口的类:

public interface IStockService
{
    [OperationContract]
    double GetPrice(string ticker);
}

public class StockService : IStockService
{
    public double GetPrice(string ticker)
    {
        return 93.45;
    }
}
IL代码:

IStockService.GetPrice:

StockService.GetPrice:
IL_0000:  ldc.r8      CD CC CC CC CC 5C 57 40 
IL_0009:  ret         

StockService..ctor:
IL_0000:  ldarg.0     
IL_0001:  call        System.Object..ctor
IL_0006:  ret         

令人惊讶的是,我没有看到接口的任何IL代码。这是因为LinqPad的工作方式还是C编译器以不同的方式处理接口?

IL用于方法体。接口不包含任何方法体,因此没有IL


本例中的方法体(简单地说)是任何可执行代码。接口中没有任何内容是可执行的,因为它只是一个契约。由接口的实现者提供实现,实现通常包含IL。

接口本身不能有实现。因此,无法为它生成IL。@JamieDixon我尝试过两次向上投票,但它不自觉地取消了我的第一次向上投票。也许我投得太多了。