Приведенный ниже код успешно компилируется, но при запуске получаем:
TypeLoadException: Could not load type 'D'
Вот код.
struct A<T> { }
struct D
{
public A<D> ar;
}
class Program
{
static void Main()
{
System.Console.WriteLine(new D().ar); ;
}
}
С одной стороны D используется в параметре типа структуры вложенной D, т.е. имеем рекурсивное определение структуры.
Но с другой ведь параметр типа не использован нигде в A или может быть использован для задания параметра типа у ссылочного типа (т.е. не приводит к проблеме рекурсии).
Короче, вопрос: где баг, в компиляторе (который не сообщает об ошибке) или в рантайме, который вылетает не по делу?