我了解如何创建getter和setter
public myClass
{
public int myVal { get; set; }
// more stuff
}
但我不明白以后如何调用它。
public myOtherClass
{
public myOtherClass()
{
myClass localMyClass = new myClass();
localMyClass.???set??? = 42;
// Intelisense doesn't seem to give any obvious options after I enter
// the period.
}
}
我应该如何在localMyClass中设置myVal的值?
答案 0 :(得分:20)
localMyClass.myVal = 42;
Getters和setter可让您将值视为公共属性。不同的是,你可以在进行获取和设置的函数中做任何你想做的事。
示例:
private int _myVal, myOtherVal;
public int MyVal { get; set { _myVal = value; myOtherVal++; } }
public int MyVal { get { return 99; } set; }
private int _myVal;
public int MyVal { get { return _myVal; } set { ; } }
在每种情况下,用户都会觉得它只是一个公共数据成员,只需输入
localMyClass.myVal = 42;
int i = localMyClass.myVal;
gettors和settors让你实现自己的实现。另外,正如Hogan所说,“有许多库和附加组件[例如MVC.NET]需要你使用getter和setter函数” - 即使这是为了琐碎{get; set;}
的情况。
答案 1 :(得分:10)
集:
localMyClass.myVal = 42
得到:
int variable = localMyClass.myVal;
答案 2 :(得分:6)
从外部来看,访问getter和setter的语法与访问变量的语法无法区分。赋值转换为setter的调用,而plain表达式使用translate转换为getters的调用。
在intellisense中,在变量名后面放置一个点.
时,应打开getter和setter列表。属性应在其左侧具有蓝色标记(与方法左侧的品红色标记相对)。
答案 3 :(得分:5)
你想要这个
localMyClass.myVal = 42;
调用setter
和这个
varName = localMyClass.myVal;
调用getter。
答案 4 :(得分:2)
获取:var tmp = localMyClass.myVal;
设置:localMyClass.myVal = 2;