Я создал функцию для одновременного задания нескольких свойств объекта. Если какой-либо аргумент не передается функции, я хочу избежать его установки/изменения. Упрощенный пример чистейшей решение, которое я мог придумать это:Передача null в качестве параметра по умолчанию во избежание использования параметра
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
нетронутым)
Что мне кажется немного грязным для меня. Я не уверен, что это «правильная» вещь. Я подумал о перегрузке метода, но я подумал, что это будет даже более беспорядочно; В ситуации реального мира я передаю более двух аргументов, которые нужно установить, чтобы в итоге я смог перегрузить много перегрузок.
Я пропустил некоторые очевидные функциональные возможности на C#, что позволяет мне сказать «Не устанавливайте этот параметр, если ничего не передано соответствующему аргументу»?
Почему метод перегрузки существует тогда? Я бы сохранил стандарт, поэтому любой, кто смотрит на код, знает, что происходит. –
@FirstStep. Если было 5 свойств, вам понадобится 32 перегрузки для всех случаев. – Rob
это не 1 или 2 или 3 или 4 или 5? @rob –