在类本身中定义类的变量的意义是什么?是递归还是强类型
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BinaryTree
{
public class Tree<TItem> : IEnumerable<TItem> where TItem : IComparable<TItem>
{
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)
{
if (this.LeftTree == null)
{
this.LeftTree = new Tree<TItem>(newItem);
}
else
{
this.LeftTree.Insert(newItem);
}
}
else
{
if (this.RightTree == null)
{
this.RightTree = new Tree<TItem>(newItem);
}
else
{
this.RightTree.Insert(newItem);
}
}
}
public void WalkTree()
{
if (this.LeftTree != null)
{
this.LeftTree.WalkTree();
}
Console.WriteLine(this.NodeData.ToString());
if (this.RightTree != null)
{
this.RightTree.WalkTree();
}
}
public TItem NodeData { get; set; }
public Tree<TItem> LeftTree { get; set; }
public Tree<TItem> RightTree { get; set; }
#region IEnumerable<TItem> Members
IEnumerator<TItem> IEnumerable<TItem>.GetEnumerator()
{
if (this.LeftTree != null)
{
foreach (TItem item in this.LeftTree)
{
yield return item;
}
}
yield return this.NodeData;
if (this.RightTree != null)
{
foreach (TItem item in this.RightTree)
{
yield return item;
}
}
}
#endregion
#region IEnumerable Members
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
#endregion
}
}
请问在此段代码中,在类本身中定义类的变量的主要作用是什么?是递归还是强类型,通常我们会在什么情况这样使用?
------解决方案--------------------类中可以引用任何类型——只要编译器可以找到它的定义就行了。没有说过需要管它是不是自己。这跟递归没有关系,声明一个属性又不是产生一个新的类型,怎么可能跟递归有关系呢?
------解决方案--------------------
用途有很多种,
比如定义一个“人”的类,然后这个“人”有“父亲”、“母亲”属性,
而父亲母亲都属于人,
class people{
people monther;
people father;
}
这样通过 monther 属性就可以获取这个人的母亲的信息。
------解决方案--------------------
递归:一个函数中直接或者间接调用自身。
强类型:严