すでにいくつかのプロパティ値が設定されているウィジェットを取得する必要があります。ウィジェットの名前を変更する必要があります。私はオプション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;
}
オプション3に惹かれる理由を説明するために、いくつかの質問と回答を集めて悪魔の代弁者を演じたいと思います。
オプション1:渡されたウィジェットを変更しないのはなぜですか?1つのオブジェクトを「返す」だけです。渡されたオブジェクトだけを使用しないのはなぜですか?
オプション2: voidを返さないのはなぜですか?パラメータオブジェクト自体への実際のメモリポインタを使用することを署名で伝達しないのはなぜですか?
オプション3:渡したのと同じオブジェクトを返すのは奇妙ではありませんか?