如何在C#中调用getter或setter

时间:2013-03-13 04:03:24

标签: c# c#-4.0

我了解如何创建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的值?

5 个答案:

答案 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;