3

こんにちは私は次のようなC#オブジェクト初期化子を使用していました

public class Invoice
    {
        public decimal GrossSum { get; set; }
        public decimal GrossSumComp { get; set; }
    }
    public class ABC()
    {
        public Invoice Invoice {get;set;}

        public ABC(decimal grossSum)
        {
            Invoice=new Invoice()
            {
                GrossSum=grossSum,
                GrossSumComp=**GrossSum**
            };
        }
    }

そして、あるプロパティの値を別のプロパティに割り当てることができないことを確認しました。上記のように、GrossSumをGrossSumCompに割り当てようとすると、コンパイルエラーが発生しました。なぜそれがこれを許可しないのか知りたいだけです。どんな助けでも非常に効果的です。

4

2 に答える 2

2

そう規定されているからです。2 行目は、初期化されるオブジェクトのプロパティではないGrossSum名前の変数への参照です。GrossSum

エリック・リッパートの言葉を言い換えます。機能を実装するには、

  • 提案された
  • 分析した
  • 設計
  • 実装済み
  • テスト済み

これらはすべてコストがかかるため、コストに見合った、できればコストを上回る価値を付加する必要があります。

機能に簡単な回避策がある場合、コストは潜在的な価値よりも (はるかに) 高くなる可能性が高いです。

あなたの場合、grossSum代わりに単に割り当てることができますGrossSum。それは簡単な回避策です

于 2013-01-31T11:46:21.477 に答える
1

その場合のエラーメッセージはあなたの答えです:

The name 'GrossSum' does not exist in the current context

GrossSumコンパイラは、特定のコンテキストがないものをどのように知るのでしょうか? 参照しているプロパティが、初期化中のオブジェクトで定義されたものであることを示すために、指定する方法thisや同様のものはありません。GrossSum

于 2013-01-31T11:45:44.887 に答える