首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

在种本身中定义类的变量的意义是什么?是递归还是强类型

2012-10-21 
在类本身中定义类的变量的意义是什么?是递归还是强类型using Systemusing System.Collections.Genericus

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



这两个概念不知道和你说的这个有哪一点能挨上。

在类型中包含这个类型的变量的意义——这么做很普遍,如果你学过数据结构,感觉你真的少见多怪了,即便是用pascal basic或者c语言,也是如此,和编程语言一点关系也没有,几乎所有的语言都支持。
比如

C# code
class linkedlist{    node head;}class node{    node prenode;    node nextnode;    sometype data;} 

热点排行