为什么我的代码中的属性不起作用?
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.
我创建了一个接口,然后从中派生了一个 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.