プロパティまたはインデクサーは、out または ref パラメータとして渡すことはできません。質問する

プロパティまたはインデクサーは、out または ref パラメータとして渡すことはできません。質問する

上記のエラーが発生し、解決できません。少しグーグルで検索しましたが、解決できません。

シナリオ:

型のBudgetAllocateプロパティを持つクラスがあります。budgetdouble

私のdataAccessLayer

私の授業の一つで、私は次のことをやろうとしています:

double.TryParse(objReader[i].ToString(), out bd.Budget);

次のエラーが発生します:

プロパティまたはインデクサーは、コンパイル時に out または ref パラメーターとして渡すことはできません。

私もこれを試してみました:

double.TryParse(objReader[i].ToString().Equals(DBNull.Value) ? "" : objReader[i].ToString(), out bd.Budget);

その他はすべて正常に動作しており、レイヤー間の参照が存在します。

ベストアンサー1

他の人が解決策を提示していますが、なぜこれが必要なのかについては、プロパティは単に構文上の糖衣に過ぎません。方法

たとえば、Namegetter と setter を使用して というプロパティを宣言すると、内部ではコンパイラが実際に と というメソッドを生成しますget_Name()set_Name(value)次に、このプロパティの読み取りと書き込みを行うと、コンパイラはこれらの操作を、生成されたメソッドの呼び出しに変換します。

これを考慮すると、出力パラメータとしてプロパティを渡すことができない理由は明らかです。実際には、方法 オブジェクト への参照ではなく、 変数これは出力パラメータが期待するものです。

インデクサーについても同様のケースが存在します。

おすすめ記事