接口的IL代码

本文关键字:代码 IL 接口 | 更新日期: 2023-09-27 18:21:21

我正在使用LinqPad,因为我正在查看为以下接口&实现接口的类:

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。