Что это за тип .NET? Я использую отражение, чтобы получить список всех классов, и это появляется.
Что это? От куда это? Как выбрано имя DisplayClass1? Я искал источники и ничего не видел. Что означает <>? что означает c__? есть ссылка?

Что это за тип .NET? Я использую отражение, чтобы получить список всех классов, и это появляется.
Что это? От куда это? Как выбрано имя DisplayClass1? Я искал источники и ничего не видел. Что означает <>? что означает c__? есть ссылка?

Это почти наверняка класс, сгенерированный компилятором из-за лямбда-выражения или анонимного метода. Например, рассмотрите этот код:
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. Это невыразимое имя в том, что оно не является допустимым С#, что означает, что компилятор С# точно знает, что он не появится в вашем собственном коде и не столкнется с его выбором.
Точный способ компиляции анонимных функций, конечно, зависит от реализации, так как это выбор имени для дополнительного класса.
Компилятор также генерирует дополнительные классы для блоков итератора и (в С# 5) асинхронных методах и делегатах.
Джон, конечно, прав. Я предоставил "кольцо декодера" для выяснения того, что означают имена типов, генерируемые компилятором:
Где узнать о "волшебных именах" отладочного устройства VS
Имена довольно длинные, и иногда мы получаем жалобы на то, что в результате мы увеличиваем размер метаданных. Мы могли бы изменить правила генерации имен для решения этой проблемы в любое время в будущем. Поэтому очень важно, чтобы вы не писали код, который использует знание этой детали реализации компилятора.