Как компилятор C# создает этот длинный идентификатор в классах файлов?C#

Место общения программистов C#
Anonymous
Как компилятор C# создает этот длинный идентификатор в классах файлов?

Сообщение Anonymous »

Для следующих трех классов файлов:

Код: Выделить всё

file class MyClass
{
}

file class MyClass2
{
}

file class MyClass3
{
public int MyMember { get; init; }
}
Благодаря декомпиляции этого кода C# классы файлов теперь выглядят так:

Код: Выделить всё

internal class FFEAE62924BA736A3C9E8DE39EA3099D227B65B02C0A6BC7FECCB5FF0D5B9D8B3__MyClass
{
}

internal class FFEAE62924BA736A3C9E8DE39EA3099D227B65B02C0A6BC7FECCB5FF0D5B9D8B3__MyClass2
{
}

internal class FFEAE62924BA736A3C9E8DE39EA3099D227B65B02C0A6BC7FECCB5FF0D5B9D8B3__MyClass3
{
public int MyMember { get; init; }
}
Я понимаю, что — это имя исходного файла, в котором был определен класс файла, а MyClass... — это имя файла class.
Чего я не понимаю, так это очень длинного, казалось бы, идентификатора между ними:

Код: Выделить всё

FFEAE62924BA736A3C9E8DE39EA3099D227B65B02C0A6BC7FECCB5FF0D5B9D8B3
Насколько я понимаю, оно различается в зависимости от имени исходного файла, что удивительно, когда текст между двумя угловыми скобками уже кажется воспроизводимым роль.
Как компилятор C# создает этот идентификатор? Я не смог найти никакой информации об этом в Интернете. Кажется, недокументировано.

Подробнее здесь: https://stackoverflow.com/questions/785 ... le-classes

Вернуться в «C#»