Как вызвать геттер или сеттер в С#

Я понимаю, как создавать геттеры и сеттеры

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.
    }
}

Как мне установить значение myVal в localMyClass?

Ответы

Ответ 1

localMyClass.myVal = 42;

Getters и seters позволяют обрабатывать значения, такие как общедоступные свойства. Разница в том, что вы можете делать все, что хотите, внутри функций, которые выполняют получение и настройку.

Примеры:

хранить другие переменные

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;

Получатели и посредники позволяют вам выполнять свою собственную реализацию. Кроме того, как говорит Хоган, "существует ряд библиотек и надстроек [например, MVC.NET], которые требуют использования функций getter и setter" - даже если это для тривиального случая {get; set;}.

Ответ 2

Set:

localMyClass.myVal = 42

Get:

int variable = localMyClass.myVal;

Ответ 3

С внешней стороны синтаксис доступа к геттерам и сеттерам неотличим от доступа к переменным. Задания переводятся на вызовы сеттеров, в то время как простое выражение использует перевод в вызовы геттеров.

В intellisense список геттеров и сеттеров должен открыться после размещения точки . после имени переменной. Свойства должны иметь синие маркеры слева от них (в отличие от маркеров цветного цвета слева от методов).

Ответ 4

Вы хотите это

localMyClass.myVal = 42;  

для вызова setter

и этот

varName = localMyClass.myVal;

для вызова получателя.

Ответ 5

Получить: var tmp = localMyClass.myVal;

Set: localMyClass.myVal = 2;