为什么我的代码中的属性不起作用?

Why do the properties in my code not work?

我创建了一个接口,然后从中派生了一个 class:

 public interface Ishape
{
    void draw();
    int Number { get; set; }
}
class Circle : Ishape
{
    public Circle(int a)
    {
        number = a;
    }
    public void draw()
    {
        Console.WriteLine("Circle.");
    }
    private int number;

    public int Number
    {
        get
        {
            return number;
        }
        set
        {
            if (value < -5)
                number = -5;
        }
    }
    public int GetNumber()
    {
        return number; 
    }
}
class Program
{
    static void Main(string[] args)
    {
        Circle a1 = new Circle(-6);
        Console.WriteLine(a1.GetNumber());
        Console.ReadLine();
    }
}

如你所见,界面中有一个auto属性。然后我决定在新的 class 中创建一个 属性,它派生自接口,如果值小于 -5,则将变量 "number" 设置为 -5。出于某种原因,属性 似乎不起作用。使用构造函数,我将变量的值设置为 -6,而 属性 并没有将值更改为 -5。为什么?

这是因为您在构造函数中设置了 number = a 而不是 Number = a。
试试这个:


 public Circle(int a)
{
    Number = a;
}

你的 Number 属性 实际上从来没有 set.

在您的 Circle 构造函数中,将 number 更改为 Number

public Circle(int a)
{
    Number = a;
}

此外,如果您打算将 GetNumber 用作公开可用的 get(仅此而已),那么我建议您更改 Number 属性 的访问修饰符在你的 Circle class.