我已经创建了一个接口,然后从中派生了一个类:
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。 为什么?
这是因为您正在构造函数中设置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
属性的访问修饰符。