すでにいくつかのプロパティ値が設定されているウィジェットを用意する必要があります。私はウィジェットの名前を変更する必要があります。私はオプション3に向けて描かれていますが、私はなぜその理由を明確に説明していません。C#の引数を変更して返すのに最適ですか?
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:なぜでないか返品無効ですか?なぜ、パラメータオブジェクト自体への実際のメモリポインタを使用しているというシグネチャで通信するだけではないのですか?
オプション3:あなたが渡しているのと同じオブジェクトを返すことはあなたにとって奇妙ではありませんか?
これ以上の文脈がなければ、意見はほとんどありません。 – Cymen
@Lance:各オプションについての質問、例、およびコメントの定式は、.NETで参照型がどのように動作するかについての混乱を示唆しています。例えば、2番目のオプションで 'ref'を使うのは完全に超過です。 – LBushkin
@LBushkin合意。私の理解では、オプション2は、そのプロパティの1つではなく、「ウィジェット」に割り当てていればはるかに面白いですが、オプション2は、多くの開発者(おそらく私自身はおそらく時々含む) 'ref'キーワードを適切に使用しています。 – lance