Сообщение Где баг в рантайме или в компиляторе? от 30.03.2016 21:55
Изменено 30.03.2016 22:08 VladD2
Приведенный ниже код успешно компилируется, но при запуске получаем:
С одной стороны D используется в параметре типа структуры вложенной D, т.е. имеем рекурсивное определение структуры.
Но с другой ведь параметр типа не использован нигде в A или может быть использован для задания параметра типа у ссылочного типа (т.е. не приводит к проблеме рекурсии).
Короче, вопрос: где баг, в компиляторе (который не сообщает об ошибке) или в рантайме, который вылетает не по делу?
Вот код.TypeLoadException: Could not load type 'D'
struct A<T> { }
struct D
{
public A<D> ar;
}
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine(new D().ar); ;
}
}
С одной стороны D используется в параметре типа структуры вложенной D, т.е. имеем рекурсивное определение структуры.
Но с другой ведь параметр типа не использован нигде в A или может быть использован для задания параметра типа у ссылочного типа (т.е. не приводит к проблеме рекурсии).
Короче, вопрос: где баг, в компиляторе (который не сообщает об ошибке) или в рантайме, который вылетает не по делу?
Где баг в рантайме или в компиляторе?
Приведенный ниже код успешно компилируется, но при запуске получаем:
С одной стороны D используется в параметре типа структуры вложенной D, т.е. имеем рекурсивное определение структуры.
Но с другой ведь параметр типа не использован нигде в A или может быть использован для задания параметра типа у ссылочного типа (т.е. не приводит к проблеме рекурсии).
Короче, вопрос: где баг, в компиляторе (который не сообщает об ошибке) или в рантайме, который вылетает не по делу?
Вот код.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 или может быть использован для задания параметра типа у ссылочного типа (т.е. не приводит к проблеме рекурсии).
Короче, вопрос: где баг, в компиляторе (который не сообщает об ошибке) или в рантайме, который вылетает не по делу?