Это почти наверняка класс, сгенерированный компилятором из-за лямбда-выражения или анонимного метода. Например, рассмотрим этот код:
using System;
class Test
{
static void Main()
{
int x = 10;
Func<int, int> foo = y => y + x;
Console.WriteLine(foo(x));
}
}
Это компилируется в:
using System;
class Test
{
static void Main()
{
ExtraClass extra = new ExtraClass();
extra.x = 10;
Func<int, int> foo = extra.DelegateMethod;
Console.WriteLine(foo(x));
}
private class ExtraClass
{
public int x;
public int DelegateMethod(int y)
{
return y + x;
}
}
}
... кроме использования <>c_displayClass1
в качестве имени вместо ExtraClass
. Это невыразимое имя в том смысле, что оно недопустимо в C # - это означает, что компилятор C # точно знает, что оно не появится в вашем собственном коде, и противоречит его выбору.
Точный способ компиляции анонимных функций зависит, конечно же, от реализации - как и выбор имени для дополнительного класса.
Компилятор также генерирует дополнительные классы для блоков итераторов и (в C # 5) асинхронных методов и делегатов.