我最近开始尝试自学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;
}

10-06 01:26