【菜鸟求助:程序出错】用接口实现:统计每月图书销售情况,并将每月销售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; }
}