Как записать функцию в память, и вызвать по адресу c# небезопасный код?

Чтобы записать функцию в память и вызвать ее по адресу в C#, вам потребуется использовать небезопасный код и указатели.

Первым шагом будет объявление метода с модификатором unsafe. Например, мы можем создать простую функцию Add, которая складывает два аргумента типа int:

unsafe static int Add(int a, int b)
{
    return a + b;
}

Затем мы объявляем указатель на эту функцию, с помощью оператора &:

delegate int AddDelegate(int a, int b);
AddDelegate funcPtr = new AddDelegate(&Add);

Теперь у нас есть указатель funcPtr, который указывает на функцию Add.

Чтобы вызвать эту функцию по указателю, мы можем использовать оператор *:

int result = (*funcPtr)(5, 10);
Console.WriteLine(result); // Выведет 15

Обратите внимание, что при использовании указателей и небезопасного кода в C# есть риск нарушения безопасности и утечки памяти. Поэтому необходимо быть осторожным при работе с указателями и всегда следовать соглашениям и правилам безопасности. Кроме того, указатели в C# могут использоваться только на типы значений и структуры, а не на ссылочные типы и объекты.

Также важно отметить, что в большинстве случаев использование указателей и небезопасного кода в C# не требуется, так как язык предоставляет безопасные и эффективные альтернативы для большинства сценариев программирования.