我理解如何创建一个getter和setter
public myClass
{
public int myVal { get; set; }
// more stuff
}
Run Code Online (Sandbox Code Playgroud)
但我不明白以后如何调用它.
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.
}
}
Run Code Online (Sandbox Code Playgroud)
我应该如何在localMyClass中设置myVal的值?
Sco*_*ica 22
localMyClass.myVal = 42;
Run Code Online (Sandbox Code Playgroud)
使用getter和setter可以将值视为公共属性.不同的是,您可以在获取和设置的功能中执行任何操作.
例子:
private int _myVal, myOtherVal;
public int MyVal { get; set { _myVal = value; myOtherVal++; } }
Run Code Online (Sandbox Code Playgroud)
public int MyVal { get { return 99; } set; }
Run Code Online (Sandbox Code Playgroud)
private int _myVal;
public int MyVal { get { return _myVal; } set { ; } }
Run Code Online (Sandbox Code Playgroud)
在每种情况下,用户都会觉得它只是一个公共数据成员,只需输入即可
localMyClass.myVal = 42;
int i = localMyClass.myVal;
Run Code Online (Sandbox Code Playgroud)
gettors和settors让你实现自己的实现.另外,正如Hogan所说,"有许多库和附加组件[例如MVC.NET]需要你使用getter和setter函数" - 即使这是为了琐碎的{get; set;}情况.
Are*_*eks 10
组:
localMyClass.myVal = 42
Run Code Online (Sandbox Code Playgroud)
得到:
int variable = localMyClass.myVal;
Run Code Online (Sandbox Code Playgroud)
从外部来看,访问getter和setter的语法与访问变量的语法无法区分.赋值转换为setter的调用,而plain表达式使用translate转换为getter的调用.
在intellisense中,.在变量名后面加一个点后,应该打开getter和setter列表.属性应在其左侧具有蓝色标记(与方法左侧的品红色标记相对).
你要这个
localMyClass.myVal = 42;
Run Code Online (Sandbox Code Playgroud)
打电话给二传手
还有这个
varName = localMyClass.myVal;
Run Code Online (Sandbox Code Playgroud)
打电话给吸气鬼.