C#で作業しているときに、このエラーメッセージに遭遇しました
プロパティまたはインデクサーをoutまたはrefパラメーターとして渡すことはできません
私はこれの原因を知っており、正しいタイプのローカル変数を作成し、それをout
/ref
パラメーターとして関数を呼び出してから、プロパティに割り当てるという簡単な解決策を実行しました。
RefFn(ref obj.prop);
になる
{
var t = obj.prop;
RefFn(ref t);
obj.prop = t;
}
プロパティが現在のコンテキストでの取得と設定をサポートしていない場合、これは明らかに失敗します。
なぜC#は私のためにそれをしないのですか?
これが問題を引き起こす可能性がある場所を私が考えることができる唯一のケースは次のとおりです。
- 糸脱毛
- 例外
スレッド化の場合、その変換は書き込みが発生するタイミング(関数呼び出し後と関数呼び出し後)に影響しますが、それを信頼するコードは、壊れたときにほとんど共感を得られないのではないかと思います。
例外については、懸念事項は次のとおりです。ref
関数がスローよりもいくつかのパラメーターの1つに割り当てるとどうなりますか?些細な解決策では、パラメータのすべてが割り当てられるか、割り当てられない場合があります。繰り返しになりますが、これは言語の使用がサポートされるとは思いません。
注:このエラーメッセージが生成される理由の仕組みを理解しています。私が探しているのは、C#が簡単な回避策を自動的に実装しない理由です。