我最近开始尝试自学C#,这是在属性中使用业务规则(在我的情况下为FurColor)的实现中的初学者尝试。当我在下面运行程序时,得到一个NullReferenceException
。有人可以帮助我找到此错误的原因吗?异常发生在第15行
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _10_23_Test
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("programming practice!");
Dog d = new Dog();
Console.Write("what color is your dog: ");
d.FurColor = Console.ReadLine();
Console.WriteLine("the color of your dog is {0}", d.FurColor);
}
}
class Dog
{
private string furColor;
private string petName;
private int tagNum;
public Dog() { }
public Dog(string color, string name, int tagID)
{
furColor = color;
petName = name;
tagNum = tagID;
}
//properties
public string FurColor
{
get { return furColor; }
set {
do
{
Console.Write("enter in a viable color type: ");
}
while (furColor.Length > 10);
furColor = value;
}
}
public string Name
{
get { return petName; }
set { petName = value; }
}
public int TagNum
{
get { return tagNum; }
set { tagNum = value; }
}
}
}
最佳答案
一旦更正,您将得到一个无限循环。
注意:您不应在属性的Set子句中要求输入。
您应该首选一个要求输入的成员函数,检查它是否有效,然后设置颜色。
在您的狗类中,添加一个类似于以下内容的函数:
public void setFurColor()
{
string color = string.Empty;
do
{
Console.Write("what color is your dog: ");
color = Console.ReadLine();
}while ( ! string.IsNullOrEmpty(color) && bleh.Length < 10);
this.furColor = color;
}