2012-06-12 3 views
-2

У меня есть следующий код: Проблема в том, когда я пытаюсь назначить страну клиенту, получив ошибку. Мне нужно знать, как назначить свойство, объявленное как enum? Я буду использовать это в выражении linq, есть ли другой способ использования перечисления?C#: как использовать 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"}}} 
} 

Мои 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

Какая ошибка у вас? – Joey

+0

Ошибка \t \t 1 Не удается неявно преобразовать тип 'JoinDemo.Countries.Country' в '' JoinDemo.Countries \t D: \ Developement \ C# -разрядного \ C# Practice \ JoinDemo \ JoinDemo \ Form1.cs \t JoinDemo –

+0

В если вы не знаете, 'enum' не должны быть объявлены внутри классов. Собственно, это что-то очень редкое. – phg

ответ

3

Ваша проблема в том, что ваше поле Клиент имеет тип Countries, не Countries.Country. И вы пытаетесь присвоить Countries.Country, что явно несовместимо.

Перечисление тип, как и классы. Вам не нужен класс вокруг него. Вы должны избавиться от внешнего класса там:

public enum Country { Italy,Japan,Bangladesh } 

и переопределить поле в Customer:

public Country Country; 

(да, наличие члена класса с тем же именем, типа работает в C#).

Другой вопрос: Вы, вероятно, следует использовать свойства, а не поля:

public Country Country { get; set; } 

Это сделает вашу жизнь проще вниз линию (и вы можете использовать его так же, как вы делали сейчас, пока вы не прочтете на различия).

+0

Спасибо .. Теперь я понял. Большое спасибо. –

Смежные вопросы