我正在尝试修改“设置”部分,但这些更改似乎根本没有发生。这是显示相同结果的基本代码:
class Class1
{
private int num;
public Class1(int number)
{
num = number;
}
public int getNumber
{
get
{
return num;
}
set
{
if (value > 0)
num = value;
else
num = 0;
}
}
}
在这里,我想将任何负值设为0。
class Program
{
static void Main(string[] args)
{
Class1 c1 = new Class1(10);
Class1 c2 = new Class1(-10);
Console.WriteLine(c1.getNumber);
Console.WriteLine(c2.getNumber);
Console.ReadLine();
}
}
结果给了我
10 -10
我试过使用
set
{
num = 100;
}
但是结果仍然没有改变。我已经尝试过对正在使用的书进行仔细检查,但没有发现任何区别。我正在使用Visual Studio 2012(如果有任何意义)。
您的代码没有调用属性的set部分。因为,您只在调用构造函数。并且在您的构造函数中,您只需为后备字段变量(num
)设置tha值。
同样,按照约定,您的类成员名称也不适当。更改为:
num- > number getNumber-> Number
试试这个:
Class1 c1 = new Class1();
c1.Number = -10; // The set accessor is invoked here
int myNumber = c1.Number; // The get accessor is invoked here
如果要通过构造函数调用set访问器,则将构造函数更改为:
public Class1(int number)
{
Number = number;
}
然后它将正确调用set访问器:
Class1 c1 = new Class1(10); // The set accessor will be invoked
并且不要忘记将您的类实现更改为:
class Class1
{
private int number;
public int Number
{
get { return number; }
set
{
if (value > 0)
number = value;
else
number = 0;
}
}
// If you do provide a constructor (any constructor with any signature),
// the parametrless constructor will not be generated
public Class1()
{
}
public Class1(int number)
{
Number = number;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句