gpt4 book ai didi

c# - C#中通过抽象类显式实现属性

转载 作者:太空宇宙 更新时间:2023-11-03 21:41:17 25 4
gpt4 key购买 nike

这是我正在尝试做的事情:

顶部是一个界面:

interface IHasPosition
{
Position Position
{
get;
}
}

接下来,我们有一个抽象类:

abstract class Person : IHasPosition
{
public abstract Position Position
{
get;
}
}

最后,我扩展了 Person:

class Instructor : Person
{
public override Position Position
{
get { return new Position(1, 1); }
}
}

这编译得很好。但是,我似乎无法明确定义属性 Position。像这样:

class Instructor : Person
{
public override Position IHasPosition.Position
{
get { return new Position(1, 1); }
}
}

编译失败:

Error   1   'ConsoleApplication3.Instructor.IHasPosition.Position': virtual or abstract members cannot be private
Error 3 The modifier 'override' is not valid for this item
Error 2 The modifier 'public' is not valid for this item

最佳答案

Instructor 继承了 Person 并且 Instructor.Position 覆盖了 Person.Position

因为 Person.Position 已经实现了 IHasPosition.Postion,所以 Instructor.Position 也实现了。

Instructor 是一个 Person 是一个 IHasPosition

Instrcutor 接口(interface)IHasPosition.Position 的显式实现是不必要的,并且会产生误导。

假设您明确实现了已继承的接口(interface)。在覆盖上它是多余的,并且是非法的,因为它的 public,在另一个成员上它会产生歧义。

关于c# - C#中通过抽象类显式实现属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19182356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com