Интерактивное окно C# отображает `Submission#30+E` как тип перечисления
Что значит утверждение Submission#30+E
значит, если я пытаюсь вывести тип перечисления в консоли, используя интерактивное окно C# в Visual Studio:
> enum E { First, Second};
> Console.WriteLine(typeof(E));
Submission#30+E
1 ответ
Это характеристика интерактивного окна C#. Благодаря тому, что интерактивное окно работает, предлагая REPL для фактически скомпилированного языка, интерактивное окно будет компилировать каждую строку, которую вы отправляете ему отдельно. Таким образом, внутренне каждое из этих "представлений" обрабатывается и компилируется индивидуально.
Затем материалы индексируются, начиная с 0. Таким образом, первое представление компилируется в Submission#0
вторая в Submission#1
и так далее. В твоем случае, Submission#30
означает, что это был 31-й ввод, который вы отправили в интерактивное окно C# во время этого сеанса Visual Studio.
Что на самом деле происходит внутри, так это то, что код, который вы отправляете, компилируется в собственный тип. Таким образом, каждое представление имеет свой собственный тип, который будет использоваться для оценки интерактивного ввода. Вы угадали, Submission#n
это именно тот тип.
Остальная часть того, что вы видите, +E
, При просмотре имен типов, плюс в имени означает, что это вложенный тип. Рассмотрим следующий пример:
public class Foo
{
public class Bar
{ }
}
Вот, Bar
вложен внутрь Foo
, Если вы посмотрите на typeof(Foo.Bar).ToString()
(который вызывается, когда вы оцениваете typeof(Foo.Bar)
в интерактивном режиме) вы вернетесь Foo+Bar
, Так что у тебя есть Bar
вложенный в Foo
,
Итак, возвращаясь к вашей ситуации, у вас есть все, что вам нужно, чтобы понять, что происходит: Submission#30+E
означает, что это 31-е представление в интерактивном окне, и есть вложенный тип E
внутри автоматически созданного типа Submission#30
,
И если вы подумаете об этом, это имеет смысл: поскольку все, что вы отправляете в приглашение, компилируется в его собственный тип, определения типов должны быть вложены в этот автоматически созданный тип. И это именно то, что случилось с E
,