C# 9 默认实现导致错误

问题描述

我在 c# 9 中遇到了认实现的问题。 这是我的问题。每次尝试使用认实现时,都会收到此错误 “ToyotaCorolla”不包含“canOffroad”的定义,并且无法找到接受“ToyotaCorolla”类型的第一个参数的可访问扩展方法“canOffroad”(您是否缺少 using 指令或程序集引用?)[carapp]>

界面如下:

public interface ICar
{
   
    string Model{get;}
    PaintColor Paint{get; set;}
    string[] Passengers {get;}
    void addPassenger(string passenger);
    int MaxSpeed{get;}

    void drive();
    void openDoor();
    bool canOffroad => false;

}

这是课程的一部分(没有 canOffroad)

public class ToyotaCorolla : ICar
{
    public string Model => "Toyota Corolla";
    public PaintColor Paint{get; set;}
    public string[] passengers = new string[6];
    public virtual int MaxSpeed => 190;

    public string[] Passengers => passengers;

    


    public void addPassenger(string passenger)
    {
        bool added = false;
        for(int i = 0 ; i < passengers.Length; i ++)
        {
            if (passengers[i] == null)
            {
                passengers[i] = passenger;
                added = true;
                break;
            }
        }
        if (added == false)
        {
            WriteLine("The passenger Could not be added(too many passengers in car)");
        }
    }



    public void drive()
    {
        WriteLine("The car is driving");
    }

    public void openDoor()
    {
        WriteLine("The car door is opening");
    }
}

这是导致问题的主要方法的一部分。

static void Main(string[] args)
{
   var JeepWrangler = new JeepWrangler();
   var corola1 = new ToyotaCorolla();
   WriteLine(corolla1.canOffroad);//causes compiler error

   WriteLine(JeepWrangler.canOffroad);//works fine(overrides default interface method in class)
}

我查看了许多网站,它看起来与他们的示例完全相同。此外,我知道我正确地将命名空间导入了 main 方法,因为 corolla1 和 JeepWrangler 类与 ICar 接口在同一个文件中。

是什么导致了这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)