Я использую частные и общедоступные методы все время. Однако я не понимаю, почему они работают. Создание небольшой программы Hello World:
public class CallPublicHelloWorld
{
public void CallHelloWorld()
{
publicHelloWorld();
privateHelloWorld();
}
private void privateHelloWorld()
{
Console.WriteLine("Hello World");
}
public void publicHelloWorld()
{
Console.WriteLine("Hello World");
}
}
ИЛ, созданный для общедоступного метода:
IL_0000: nop
IL_0001: ldstr "Hello World"
IL_0006: call void [mscorlib]System.Console::WriteLine(string)
IL_000b: nop
IL_000c: ret
ИЛ, созданный для частного метода:
IL_0000: nop
IL_0001: ldstr "Hello World"
IL_0006: call void [mscorlib]System.Console::WriteLine(string)
IL_000b: nop
IL_000c: ret
Это то же самое.
Как JIT различает и проверяет, соблюдались ли частные/публичные правила?