C#对基类继承感到困惑

时间:2019-02-25 13:20:51

标签: c# binary-tree multiple-inheritance

对于类之间如何相互继承方法,我感到困惑。我已经了解了从基类继承的知识,但是,有一些我不理解的示例代码。它涉及到搜索二叉树,而我找不到任何能更好地解释代码如何继承的资源。

我的目的是了解它,以便可以使用它搜索链接列表。

如果有人可以推荐我阅读任何解释这一特定领域的相关文献,我将不胜感激。

我已经突出显示了我实际上还不了解其继承方式的代码部分。具体部分首先发布:

$guess['probability']['$label']

整个程序:

public Company Read(string bezeichnung)
{
    return stri.Search(new Company() { Bezeichnung = bezeichnung });
}

2 个答案:

答案 0 :(得分:1)

a。您的代码中没有真正的继承。仅实现标准接口IComparable<T>。实现一个接口有时称为继承,但它并不相同。在这种情况下,它强制Company实现CompareTo()方法。

b。您有疑问的代码仅创建一个临时对象。您可以将其重写为可能更易于理解的内容:

//return stri.Search(new Company() { Bezeichnung = bezeichnung });
var tempCompany = new Company() { Bezeichnung = bezeichnung };
return stri.Search(tempCompany);

答案 1 :(得分:1)

代码中的类BinaryTree<T>要求T必须实现IComparable<T>。许多列表式的类提出了类似的要求。如果类型实现IComparable<T>,则意味着可以使用ComparetTo( T t1, T t2 )方法将一个类的两个实例进行相互比较。此方法返回一个指示,指出T大于,小于或等于另一个。意识到大于,小于或等于完全取决于实现接口的类型。它主要用于根据比较结果对树,列表或其他结构中的事物进行排序或定位。

实现接口看起来像类继承。语法是一样的...但是它更像是一个契约,因为接口没有要继承的代码。如果您制作的课程如下:

class MyClass: IComparable<MyClass>
{
  //--> stuff
}

...然后,您必须使用带有签名的公开可见方法:

int CompareTo( MyClass a, MyClass b )
{
   //--> look at the two instances and make a determination...
}

该方法可以使用该类的任何特征来确定是什么使a 大于,小于或等于 b ...从而控制它的方式将被放置到结构中。

一个类只能从另一个类继承...但是它可以实现所需数量的接口。我猜这就是多重​​继承。