关于封装:属性
About Encapsulation : properties
案例一:
class example
{
private int roll;
public int Roll
{
get {
return roll;
}
set{
if (value > 0)
{ roll = value; }
}
}
//public example()
//{
// roll = 500;
//}
}
class practice_4
{
static void Main(string[] args)
{
example ABC = new example();
Console.WriteLine(ABC.Roll = -1);
Console.ReadLine();
}
}
输出:-1
我设置了一个不包含任何非法值的业务逻辑,默认值是“0”..
案例二:
class example
{
private byte roll;
public byte Roll
{
get {
return roll;
}
set{
if (value > 0)
{ roll = value; }
}
}
//public example()
//{
// roll = 500;
//}
}
class practice_4
{
static void Main(string[] args)
{
example ABC = new example();
Console.WriteLine(ABC.Roll = -1);
Console.ReadLine();
}
}
上面的代码显示编译时错误,因为我只是将 valuetype Int 更改为 byte
错误:常量值 -1 无法转换为字节 ...
什么Console.WriteLine方法真的有用吗?
这是因为赋值表达式 return 是被赋值的值,在本例中为 -1
。它不是 return ABC.Roll
,您可以通过在赋值后输出 属性 值来验证:
Console.WriteLine(ABC.Roll = -1); //-1
Console.WriteLine(ABC.Roll); //0
所以 ABC.Roll
实际上从未改变 setter
方法中验证逻辑的原因。
一项分配有一个 return 值(分配的值)。因此,即使您没有存储 -1
,它仍然是赋值本身的 return 值。
这将打印 0
:
ABC.Roll = -1;
Console.WriteLine(ABC.Roll);
案例一:
class example
{
private int roll;
public int Roll
{
get {
return roll;
}
set{
if (value > 0)
{ roll = value; }
}
}
//public example()
//{
// roll = 500;
//}
}
class practice_4
{
static void Main(string[] args)
{
example ABC = new example();
Console.WriteLine(ABC.Roll = -1);
Console.ReadLine();
}
}
输出:-1
我设置了一个不包含任何非法值的业务逻辑,默认值是“0”..
案例二:
class example
{
private byte roll;
public byte Roll
{
get {
return roll;
}
set{
if (value > 0)
{ roll = value; }
}
}
//public example()
//{
// roll = 500;
//}
}
class practice_4
{
static void Main(string[] args)
{
example ABC = new example();
Console.WriteLine(ABC.Roll = -1);
Console.ReadLine();
}
}
上面的代码显示编译时错误,因为我只是将 valuetype Int 更改为 byte
错误:常量值 -1 无法转换为字节 ...
什么Console.WriteLine方法真的有用吗?
这是因为赋值表达式 return 是被赋值的值,在本例中为 -1
。它不是 return ABC.Roll
,您可以通过在赋值后输出 属性 值来验证:
Console.WriteLine(ABC.Roll = -1); //-1
Console.WriteLine(ABC.Roll); //0
所以 ABC.Roll
实际上从未改变 setter
方法中验证逻辑的原因。
一项分配有一个 return 值(分配的值)。因此,即使您没有存储 -1
,它仍然是赋值本身的 return 值。
这将打印 0
:
ABC.Roll = -1;
Console.WriteLine(ABC.Roll);