C#在泛型类中定义自动属性

C#在泛型类中定义自动属性,c#,generics,properties,C#,Generics,Properties,我是C#的新手,我正在完成约翰·夏普写的《微软Visual C#2013逐步》一书。 在一次关于“泛型”的练习中,我发现以下代码: public class Tree<TItem> where TItem : IComparable<TItem> { public TItem NodeData { get; set; } public Tree<TItem> LeftTree { get; set; } public Tree<T

我是C#的新手,我正在完成约翰·夏普写的《微软Visual C#2013逐步》一书。 在一次关于“泛型”的练习中,我发现以下代码:

public class Tree<TItem> where TItem : IComparable<TItem>
{
    public TItem NodeData { get; set; }
    public Tree<TItem> LeftTree { get; set; }
    public Tree<TItem> RightTree { get; set; }

    public Tree(TItem nodeValue)
    {
        this.NodeData = nodeValue;
        this.LeftTree = null;
        this.RightTree = null;
    }

    public void Insert(TItem newItem)
    {
        TItem currentNodeValue = this.NodeData;
        if (currentNodeValue.CompareTo(newItem) > 0)
        {
            // Insert the new item into the left subtree
            // code here....
        }
        else
        {
            // Insert the new item into the right subtree
            // code here....
        }
    }

}
在这方面的其他人:

public Tree<TItem> LeftTree { get; set; }
public Tree<TItem> RightTree { get; set; }
公共树LeftTree{get;set;} 公共树RightTree{get;set;}
有人能解释为什么吗?谢谢

这些属性用于不同的用途。顾名思义:

  • NodeData
    用于简化树中存储的信息
  • LeftTree
    /
    RightTree
    用于简化树的拓扑结构-每个当前对象(节点)基本上是以自身为根的树的根。因为它是一个二叉树,所以它有两个直接的后代——左节点和右节点
泛型发挥作用的部分是关于树中存储的数据类型。因此,
NodeData
只是一个“类型”
TItem
。左侧和右侧节点的类型为
Tree
,以确保在树的任何深度都存储
TItem
类型的数据

为了使它更简单,让我们假设您想要创建一个整数的二叉树。然后,您可以通过以下方式对其进行建模:

public class Tree 
{
    public int Data { get; set; }
    public Tree Left {get; set; }
    public Tree Right {get; set; }
}

我认为通过这种方式,您可以真正了解
数据
属性之间的根本区别。

这些属性用于不同的事情。顾名思义:

  • NodeData
    用于简化树中存储的信息
  • LeftTree
    /
    RightTree
    用于简化树的拓扑结构-每个当前对象(节点)基本上是以自身为根的树的根。因为它是一个二叉树,所以它有两个直接的后代——左节点和右节点
泛型发挥作用的部分是关于树中存储的数据类型。因此,
NodeData
只是一个“类型”
TItem
。左侧和右侧节点的类型为
Tree
,以确保在树的任何深度都存储
TItem
类型的数据

为了使它更简单,让我们假设您想要创建一个整数的二叉树。然后,您可以通过以下方式对其进行建模:

public class Tree 
{
    public int Data { get; set; }
    public Tree Left {get; set; }
    public Tree Right {get; set; }
}

我认为通过这种方式,您可以真正了解
数据
属性之间的根本区别。

他定义了一棵树。NodeData属性是当前节点值。然后,如果该值小于当前节点的值,则将新值置于左侧,否则置于右侧。如果LeftValue和RightValue的类型是Tree,则它应该具有父子结构。这个类允许创建类似二叉树的数据结构。

他定义了一棵树。NodeData属性是当前节点值。然后,如果该值小于当前节点的值,则将新值置于左侧,否则置于右侧。如果LeftValue和RightValue的类型是Tree,则它应该具有父子结构。该类允许创建类似二叉树的数据结构