質問

私が理解しているように、C#は参照によってパラメーターをメソッドに渡します。 vb.netでは、これをbyvalとbyrefで指定できます。デフォルトはbyvalです。

これはVisual Basic 6.0との互換性のためですか、それともランダムですか?また、C#で使用するものをどのように指定できますか?私は価値によってパラメーターを渡すというアイデアが好きです。

役に立ちましたか?

解決

C#のパラメーターは、次のとおりです デフォルト 価値で渡されます。これを明示的にする修飾子はありませんが、追加すると ref / out パラメーターはby-referenceです。

ここでの通常の混乱は、次の違いです。

  • 値でバリュータイプを渡す(値タイプの変更は発信者には見えませんが、とにかく値タイプは理想的には不変である必要があります)
  • 参照によってバリュータイプを渡すこと(値タイプの変更は発信者に表示されますが、とにかくバリュータイプは理想的には不変である必要があります - 非常に重要です。
  • 値で参照を渡す(変更 フィールド/プロパティ REFタイプの発信者には見えますが、 再割り当て 新しい/異なるオブジェクトへのrefタイプはです いいえ 見える)
  • 参照によって参照を渡す(フィールド/プロパティの変更、 参照を再割り当てすることは、発信者に表示されます)

他のヒント

値を通過することは、C#のデフォルトです。ただし、渡される変数が参照タイプの場合、あなたは 参照 価値によって。これはおそらくあなたの混乱の起源です。

基本的に、参照を値で渡すと、それが言及するオブジェクトを変更することができ、これらの変更はメソッドの外側に持続しますが、変数に別のオブジェクトを参照し、その変更をメソッドの外側に持続させることはできません。

C#のパラメーターは、デフォルトで「byval」に渡されます。別の動作が必要な場合は、「ref」または「out」を指定する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top