日期:2014-05-17  浏览次数:20887 次

在类本身中定义类的变量的意义是什么?是递归还是强类型
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 属性就可以获取这个人的母亲的信息。
------解决方案--------------------
递归:一个函数中直接或者间接调用自身。
强类型:严