4

カスタム列挙型と10進値の辞書であるPaymentプロパティを持つCustomerオブジェクトがある場合

Customer.cs
public enum CustomerPayingMode
{
   CreditCard = 1,
   VirtualCoins = 2, 
   PayPal = 3
}
public Dictionary<CustomerPayingMode, decimal> Payment;

クライアントコードで、辞書に値を追加する際に問題が発生しました。次のように試してみました

Customer cust = new Customer();
cust.Payment = new Dictionary<CustomerPayingMode,decimal>()
                      .Add(CustomerPayingMode.CreditCard, 1M);
4

5 に答える 5

6

Add()メソッドは、割り当てることができる値を返しません。cust.Paymentディクショナリを作成してから、作成されたディクショナリオブジェクトのAdd()メソッドを呼び出す必要があります。

Customer cust = new Customer();
cust.Payment = new Dictionary<CustomerPayingMode,decimal>();
cust.Payment.Add(CustomerPayingMode.CreditCard, 1M);
于 2013-03-25T13:12:32.837 に答える
2

辞書をインラインで初期化できます:

Customer cust = new Customer();
cust.Payment = new Dictionary<CustomerPayingMode, decimal>()
{
    { CustomerPayingMode.CreditCard, 1M }
};

また、コンストラクター内で辞書を初期化し、ユーザーが辞書を初期化せずにCustomer追加できるようにすることもできます。Payment

public class Customer()
{
    public Customer() 
    {
        this.Payment = new Dictionary<CustomerPayingMode, decimal>();
    }

    // Good practice to use a property here instead of a public field.
    public Dictionary<CustomerPayingMode, decimal> Payment { get; set; }
}

Customer cust = new Customer();
cust.Payment.Add(CustomerPayingMode.CreditCard, 1M);
于 2013-03-25T13:13:23.323 に答える
1

cust.Paymentこれまでのところ、タイプは理解Dictionary<CustomerPayingMode,decimal>していますが、の結果を割り当てています.Add(CustomerPayingMode.CreditCard, 1M)

あなたがする必要があります

cust.Payment = new Dictionary<CustomerPayingMode,decimal>();
cust.Payment.Add(CustomerPayingMode.CreditCard, 1M);

メソッド呼び出しをチェーンすると、結果はチェーン内の最後の呼び出し(この場合は.Addメソッド)の戻り値になります。voidを返すため、キャストに失敗しますDictionary<CustomerPayingMode,decimal>

于 2013-03-25T13:13:40.067 に答える
0

ディクショナリを作成し、それに値を追加してから、.Add関数の結果を変数に返します。

Customer cust = new Customer();

// Set the Dictionary to Payment
cust.Payment = new Dictionary<CustomerPayingMode, decimal>();

// Add the value to Payment (Dictionary)
cust.Payment.Add(CustomerPayingMode.CreditCard, 1M);
于 2013-03-25T13:13:25.370 に答える
0

別の行で辞書に値を追加します。

    Customer cust = new Customer();
    cust.Payment = new Dictionary<CustomerPayingMode, decimal>();
    cust.Payment.Add(CustomerPayingMode.CreditCard, 1M);
于 2013-03-25T13:37:20.867 に答える