Я использую 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 # по-другому обрабатывает интерфейсы?