C#:如何使用枚举关键字?

时间:2012-06-12 06:43:21

标签: c# enums

我有以下代码,问题是当我尝试将国家/地区分配给客户时,收到错误。我需要知道如何分配声明为枚举的属性?我将在linq表达式中使用它,有没有其他方法可以使用枚举?

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"}}}
}

我的enum定义如下:

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);
    }

}

1 个答案:

答案 0 :(得分:3)

您的问题是,您在客户中的字段属于Countries,而不是Countries.Country。并且您正在尝试分配显然不兼容的Countries.Country

枚举是类型,就像类一样。你不需要围绕它的课程。你应该摆脱那里的外层阶级:

public enum Country { Italy,Japan,Bangladesh }

并重新定义Customer中的字段:

public Country Country;

(是的,拥有一个与C#同名的类成员在C#中工作)。

另一个问题:你应该使用属性而不是字段:

public Country Country { get; set; }

这将使你的生活更轻松(你可以像现在一样使用它,直到你已经阅读了差异)。