如何在C#中调用getter或setter

BIB*_*IBD 23 c# c#-4.0

我理解如何创建一个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)


das*_*ght 6

从外部来看,访问getter和setter的语法与访问变量的语法无法区分.赋值转换为setter的调用,而plain表达式使用translate转换为getter的调用.

在intellisense中,.在变量名后面加一个点后,应该打开getter和setter列表.属性应在其左侧具有蓝色标记(与方法左侧的品红色标记相对).


Hog*_*gan 5

你要这个

localMyClass.myVal = 42;  
Run Code Online (Sandbox Code Playgroud)

打电话给二传手

还有这个

varName = localMyClass.myVal;
Run Code Online (Sandbox Code Playgroud)

打电话给吸气鬼.