如何解决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 举报,一经查实,本站将立刻删除。