Как лучше всего изменить и вернуть аргумент C #?

Мне нужно взять виджет, для которого уже установлено несколько значений свойств. Мне нужно изменить имя виджета. Меня тянет к Варианту 3, но мне трудно объяснить, почему .

public void Do(Widget widget) { // 1
    widget.Name = "new name";
}

public void Do(ref Widget widget) { // 2
    widget.Name = "new name";
}

public Widget Do(Widget widget) { // 3
    widget.Name = "new name";
    return widget;
}

Я хотел бы сыграть в Devil's Advocate, задав несколько вопросов и собрав ответы, чтобы помочь мне объяснить, почему меня тянет к Варианту 3.

Вариант 1: Почему нет просто измените переданный виджет? Вы «возвращаете» только один объект. Почему бы просто не использовать переданный объект?

Вариант 2: Почему не возвращает void? Почему бы и нет просто сообщите в подписи, что вы будете использовать фактический указатель памяти на сам объект параметра?

Вариант 3: Разве вам не странно, что вы возвращаете тот же объект, который передаете ?

5
задан lance 22 September 2011 в 15:50
поделиться