-2

次のコードがあります。問題は、国を顧客に割り当てようとしているときにエラーが発生することです。列挙型として宣言されているプロパティを割り当てる方法を知る必要がありますか? これをlinq式で使用しますが、enumを使用する他の方法はありますか?

var customers = new Customer[] {
    new Customer { Name= "Badhon",City=   "Dhaka",Country=Countries.Country.Bangladesh,Order= new Orders[] {
        new Orders { OrderID=1,ProductID=1,Quantity=2,Shipped=false,Month="Jan"}}},
    new Customer {Name = "Tasnuva",City = "Mirpur",Country =Countries .Country .Italy,Order =new Orders[] {
        new Orders { OrderID=2,ProductID=2,Quantity=5,Shipped=false,Month="Feb"}}}
}

Myenumは次のように定義されます。

public class  Countries
{
    public enum Country  {Italy,Japan,Bangladesh};

}

そしてCustomer、次のように:

public class Customer
{
    public string Name;
    public string City;
    public Countries Country;
    public Orders[] Order;

    public override string  ToString()
    {
        return string.Format("Name: {0} - City: {1} - Country: {2}", this.Name, this.City, this.Country);
    }

}
4

1 に答える 1

3

あなたの問題は、 Customer のフィールドのタイプCountriesが ではなく であることCountries.Countryです。Countries.Countryそして、明らかに互換性のないa を割り当てようとしています。

列挙は、クラスと同じように型です。その周りのクラスは必要ありません。そこの外部クラスを取り除く必要があります:

public enum Country { Italy,Japan,Bangladesh }

でフィールドを再定義しますCustomer

public Country Country;

(はい、型と同じ名前のクラス メンバーを持つことは、C# で機能します)。

別の問題: おそらく、フィールドではなくプロパティを使用する必要があります。

public Country Country { get; set; }

これにより、今後の作業が楽になります (違いを確認するまでは、今と同じように使用できます)。

于 2012-06-18T06:00:06.927 に答える