Почему компилятор C# выдает инструкцию callvirt для вызова метода GetType()?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему компилятор C# выдает инструкцию callvirt для вызова метода GetType()?

Сообщение Anonymous »

Мне интересно узнать, почему это происходит. Пожалуйста, прочтите приведенный ниже пример кода и соответствующий IL-код, который был указан в комментариях под каждым разделом:

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

using System;

class Program
{
static void Main()
{
Object o = new Object();
o.GetType();

// L_0001: newobj instance void [mscorlib]System.Object::.ctor()
// L_0006: stloc.0
// L_0007: ldloc.0
// L_0008: callvirt instance class [mscorlib]System.Type [mscorlib]System.Object::GetType()

new Object().GetType();

// L_000e: newobj instance void [mscorlib]System.Object::.ctor()
// L_0013: call instance class [mscorlib]System.Type [mscorlib]System.Object::GetType()
}
}
Почему компилятор выдал вызов Virt для первого раздела, а вызов для второго раздела? Есть ли какая-либо причина, по которой компилятор когда-либо выдает инструкцию callvirt для невиртуального метода? И если есть случаи, когда компилятор выдает вызовvirt для невиртуального метода, создает ли это проблемы с безопасностью типов?

Подробнее здесь: https://stackoverflow.com/questions/845 ... ttype-meth
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Прочная функция, проблема GetType() и Type.GetType()
    Anonymous » » в форуме C#
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Почему компилятор излучает Callvirt даже для не виртуальных методов? [дублировать]
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • C# — используется ли callvirt для методов записи C#?
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как работает инструкция Callvirt .net для интерфейсов?
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Можно ли запустить статический метод с помощью функции getType в C#?
    Anonymous » » в форуме C#
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous

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