在我的课堂上我有私有变量,我只在get / set中使用它。有时我会忘记,我不应该直接使用变量(甚至在类中)并且必须使用get / set。
如何使用变量的唯一方法是get / set?
public class A {
int x;
public XVariable {
get { return x; }
set { x = value }
// some additional operations
}
void SomeMethod() {
x = 5; // no
XVariable = 5; // yes
}
}
答案 0 :(得分:8)
C#有auto properties。您的代码中不需要支持字段。
public class A {
public XVariable {
get;
set;
}
}
您还可以使用不同的访问修饰符。就像你只想在课堂上设置它一样。
public class A {
public XVariable {
get;
private set;
}
}
无法从代码中访问支持字段,但编译器将在MSIL中生成一个(C#编译为)。你不必担心那部分。
潜在的缺点Joe指出了自动道具,有时你需要在设置时在你的属性中执行其他操作(尤其是事件处理程序)。但这与汽车道具无法实现。在那种情况下,他的回答会更合适。但如果这不是您的用例的问题,那么我的回答就足够了。
答案 1 :(得分:2)
您可以创建基类,并在派生类中完成所有实际工作:
public class SomeBaseClass {
private int _x;
public int X { get { return _x; } set { _x = value; } }
}
public class DerivedClass : SomeBaseClass {
void DoSomething() {
// Does not have access to _x
}
}
答案 2 :(得分:0)
许多人使用下划线为其私有变量添加前缀,以帮助表示变量是私有的。 (虽然这是一个观点问题,但有些人喜欢它而有些人不喜欢)对this问题有更多的了解。
你可以但是,请废弃该字段并使用auto property,例如:
public XVariable { get; set; }
auto属性将存储匿名支持字段" out of view"。