Skip to content

Partial default interface members are not virtual #77346

@jjonescz

Description

@jjonescz
using System;

M(new C1());
M(new C2());

static void M(I x)
{
    x.M1();
    x.M2();
}

partial interface I
{
    public void M1()
    {
        Console.Write(1);
    }

    public partial void M2();
    public partial void M2()
    {
        Console.Write(2);
    }
}

class C1 : I;

class C2 : I
{
    public void M1()
    {
        Console.Write(3);
    }
    
    public void M2()
    {
        Console.Write(4);
    }
}

Expected behavior: Outputs 1234.
Actual behavior: Outputs 1232. That is, the partial method is not virtual unlike the non-partial method.
Notes: Partial properties and events behave similarly.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions