Информация об изменениях

Сообщение виртуальные методы в C# от 22.02.2017 10:12

Изменено 04.03.2017 21:59 VladD2

виртуальные методы в C#
У меня от этого мозг ломается. В моей картине мира виртуальной функция Test должна быть только в классе M.

using System;

class program
{
    static void Main(string[] args)
    {
        int sum = 0;
        sum += new Base1().Test();
        sum += new Base2().Test();
        Console.WriteLine(sum);
    }
}

class Base1
{
    public int Test()
    {
        var m = typeof(Base1).GetMethod(nameof(Test));
        return m.IsVirtual ? 1 : 0;
    }
}

class Base2
{
    public int Test()
    {
        var m = typeof(Base2).GetMethod(nameof(Test));
        return m.IsVirtual ? 1 : 0;
    }
}

interface I { int Test(); }
class M : Base2, I { }


Что надо сделать, чтобы на экран был выведен 0 ? (Не меняя исходного кода)
виртуальные методы в C#
У меня от этого мозг ломается. В моей картине мира виртуальной функция Test должна быть только в классе M.

using System;

class program
{
    static void Main(string[] args)
    {
        int sum = 0;
        sum += new Base1().Test();
        sum += new Base2().Test();
        Console.WriteLine(sum);
    }
}

class Base1
{
    public int Test()
    {
        var m = typeof(Base1).GetMethod(nameof(Test));
        return m.IsVirtual ? 1 : 0;
    }
}

class Base2
{
    public int Test()
    {
        var m = typeof(Base2).GetMethod(nameof(Test));
        return m.IsVirtual ? 1 : 0;
    }
}

interface I { int Test(); }
class M : Base2, I { }

Что надо сделать, чтобы на экран был выведен 0 ? (Не меняя исходного кода)