日期:2014-05-18  浏览次数:20729 次

【菜鸟求助:程序出错】用接口实现:统计每月图书销售情况,并将每月销售100本的图书信息显示出来。
帮忙看下,此程序出错。怎么回事?
其中,红色标记处,出现“确保你没有无限循环或无限递归”,“System.StackOverflowException”类型的未经处理的异常出现在 C5_04_interface.exe 中。

可是“错误列表”中并没有错误和警告啊!怎么办?
谢谢各位了!


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace C5_04_interface
{
  public interface IBooks
  {
  int Number { get; set; }
  }
  class Books:IBooks
  { private string name;
  private double prize;
  public Books(string n, double p,int no)
  {
  name = n;
  prize = p;
  Number = no;
  }
  public int Number
  {
  get { return Number; }
  set { if (value == 100) Number = value; }
  }
  public string Speak()
  {
  if (Number == 100)
  return String.Format("书名:{0}\t价格:{1}",name,prize);
  else return null;
  }
  }



  class Program
  {
  static void Main(string[] args)
  {
  Console.WriteLine("销售数目为100本的图书的信息:");
  Books book1 = new Books("西游记", 48, 50);
  Books book2 = new Books("三国演义", 60, 100);
  Console.WriteLine(book1.Speak());
  Console.WriteLine(book2.Speak());
  Console.Read();
  }
  }
}

------解决方案--------------------
你都在通过属性访问属性,不循环才怪,改为如下
C# code

private int _number;
public int Number
  {
  get { return _number; }
  set { if (value == 100) _number = value; }
  }