提问者:小点点

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


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

 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();
    }
}

如您所见,接口中有一个autoproperty。 然后,我决定在从接口派生的新类中创建一个属性,如果变量“number”的值小于-5,该属性将把变量“number”设置为-5。 不知什么原因,物业似乎不起作用了。 使用构造函数,我将变量的值设置为-6,属性没有将值更改为-5。 为什么?


共2个答案

匿名用户

这是因为您正在构造函数中设置number=a而不是number=a.
请尝试以下操作:

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

匿名用户

您的number属性实际上从来没有set

circle构造函数中,将number更改为number

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

另外,如果您打算使用GetNumber作为公开可用的Get(仅此而已),那么我建议您更改Circle类中Number属性的访问修饰符。