C# 属性和公共变量
我很难理解属性的逻辑,因为我在互联网上看到,使用属性而不是公共变量更符合逻辑,也更安全。但我想了解属性的逻辑,让它在我的脑海中浮现C# 属性和公共变量,c#,oop,C#,Oop,我很难理解属性的逻辑,因为我在互联网上看到,使用属性而不是公共变量更符合逻辑,也更安全。但我想了解属性的逻辑,让它在我的脑海中浮现 private int myVar; public int MyProperty { get { return myVar; } set { myVar = value; } } public int myVar; 使用属性而不是公共变量有什么好处?为什么我不应该在类中编写公共变量并使用from实例?根据您的注释,您希望在设置值之前执行代码。简单
private int myVar;
public int MyProperty
{
get { return myVar; }
set { myVar = value; }
}
public int myVar;
使用属性而不是公共变量有什么好处?为什么我不应该在类中编写公共变量并使用from实例?根据您的注释,您希望在设置值之前执行代码。简单的例子是:
class Example
{
DayOfWeek _day;
public DayOfWeek Day
{
// whenever you try to get this value, it will run this block
get
{
// We don't allow this to be used on Friday.
if (this._day == DayOfWeek.Friday)
{
throw new Exception("Invalid access");
}
return this._day;
}
// whenever you try to set its value, it will run this block
set
{
// We dont allow to set if it is saturday
if (value == DayOfWeek.Saturday)
{
throw new Exception("Invalid access");
}
this._day = value;
}
}
}
getter和setter基本上允许您在访问/设置值之前执行“轻量级”代码
但是如果要在属性中执行代码,请确保编写的是属性而不是方法。一个属性应该比一个方法做更少的工作——更少的工作。属性应该是轻量级的。如果您的属性需要花费大量精力,那么应该将其重构为显式方法。
还有更多。。请阅读,因为其中有一些有用的内容。简而言之,属性允许您使用
private
修饰符限制对getter或setter的访问,并在其中执行一些代码。@aepot so inside set如果我将其设为like if(myvar==15)else if(myvar==30)每当我试图修改这个myVar变量时,它都会执行其中的所有if和else?你到底想做什么?请再解释一下是的,代码将照常执行,您可能会在setter的计算中使用保留字值
。这就是我想全面了解的内容,非常感谢(var olasın yurtdaş)