Как вызвать геттер или сеттер в С#
Я понимаю, как создавать геттеры и сеттеры
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;