属性 在同名 C# 接口中

property within an interface of same name C#

public interface IBox
{
    IBox id { get; }
}

当接口在 class 上实现时,我试图理解 IBox id 的意图。

这里为什么用IBox id?从我对界面的理解来看,它列出了class的设计要求。但是,IBox idIBox 本身之内。使用 IBox 接口创建的 class 的可能用途是什么?

我试图用 IBox 界面创建一个 class。

public class Box : IBox
{
    public IBox id { get;}
}

这样做能达到什么目的?

有很多用例,其中一个类型可能有一个 属性 本身。想象一下 Person。 class 的每个实例都可能有 Children,它们本身也有 Person,并且可能有其他 Children.

class Person
{
    public Person Child;
}

在你的情况下,人们可能会争辩说一个盒子可能位于另一个盒子内或可能包含其他盒子。

或者让我们把 Box 想象成围绕某个几何图形的矩形。当然,边界框本身就是一个几何体,所以它也可能有一个边界框(但是几乎是一样的)。

这是我首先想到的。虽然不确定这是否能回答您的问题,但假设您正在实施链表数据结构。您可能会有某种节点来表示列表中的值:

class LinkedList<INode>
{
    public INode Head { get; set; }
}

interface INode
{
    INode Next { get; set; }
}

class Node : INode
{
    public object Value { get; set; }
    public INode Next { get; set; }
}

接口实现可用于确保 class 将引用自身以表示链表中的下一个元素。