Я создал функцию для одновременной установки нескольких свойств объекта. Если определенный аргумент не передается функции, я хочу избежать его установки/изменения. Упрощенный пример самого чистого решения, которое я мог придумать, таков:
private void setObjectProperties(MyObject myObject, float param1, bool? param2 = null)
{
myObject.param1 = param1;
myObject.param2 = param2 != null ? (bool)param2 : myObject.param2;
}
Как видно из этого метода, если функция вызывается без передачи param2
, она просто установит myObject.param2
в себя. (это означает, что если в param2
ничего не передается, то свойство myObject.param2
остается нетронутым)
То, что у меня есть, кажется мне немного грязным. Я не уверен, что это "правильный" поступок. Я думал о перегрузке методов, но подумал, что это будет еще более запутанно; В реальной ситуации я передаю более двух аргументов для установки, поэтому я могу получить много перегрузок.
Мне не хватает какой-то очевидной функциональности в С#, которая позволяет мне сказать: «Не устанавливайте этот параметр, если ему ничего не передается в соответствующий аргумент»?
null
? Это действительное значение во многих случаях. При этом нет, нет хорошего способа сделать это без кучи условных операторов. Будь то обычные операторы if или то, что у вас есть. - person Rob   schedule 03.05.2016bool
. - person D Stanley   schedule 03.05.2016