我有以下代码,问题是当我尝试将国家/地区分配给客户时,收到错误。我需要知道如何分配声明为枚举的属性?我将在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);
}
}
答案 0 :(得分:3)
您的问题是,您在客户中的字段属于Countries
,而不是Countries.Country
。并且您正在尝试分配显然不兼容的Countries.Country
。
枚举是类型,就像类一样。你不需要围绕它的课程。你应该摆脱那里的外层阶级:
public enum Country { Italy,Japan,Bangladesh }
并重新定义Customer
中的字段:
public Country Country;
(是的,拥有一个与C#同名的类成员在C#中工作)。
另一个问题:你应该使用属性而不是字段:
public Country Country { get; set; }
这将使你的生活更轻松(你可以像现在一样使用它,直到你已经阅读了差异)。