enum в конструкторе - как? - PullRequest
9 голосов
/ 27 июня 2011

У меня проблема с этим упражнением: определите класс, представляющий круг.Определенный константой класс, который содержит значение pi, и переменную, определенную в readonly, содержащую цвет круга.Возможные цвета определены в enum.Переменные определенного класса для хранения радиуса окружности А и функции, которые рассчитывают периметр и площадь объекта.Вот что я сделал:

    class Circle
{
    public const double PI = 3.14;
    public readonly enum color { Black, Yellow, Blue, Green };
    int radius;
    public Circle(string Color,int radius)
    {
        this.radius = radius;
    }
}

Я не знаю, как я могу поместить выбор enum в конструктор.Спасибо за помощь.

Ответы [ 8 ]

10 голосов
/ 27 июня 2011
public enum Color { Black, Yellow, Blue, Green };

class Circle
{
    public const double PI = 3.14;

    private Color _color;
    int radius;

    public Circle(int radius, Color color)
    {
        this.radius = radius;
        this._color = color;
    }
}

Вы также можете передать строку цвета, но тогда вам придется выполнить Enum.Parse (тип enum, строковое значение).

4 голосов
/ 27 июня 2011

Просто определите свой Enum вне определения класса и объявите локальный доступный только для чтения экземпляр типа.

enum Color 
{ 
    Black, 
    Yellow, 
    Blue, 
    Green 
};

class Circle
{
    public const double PI = 3.14;
    public readonly Color color;

    int radius;

    public Circle(string colorValue, int r)
    {
        color = ( Color ) Enum.Parse( typeof( Color ), colorValue );
        radius = r;
    }
}
0 голосов
/ 27 июня 2011

как насчет ниже

public enum Color
{
    Black, Yellow, Blue, Green
}

class Circle
{
    public const double PI = 3.14;
    public Color Color { get; private set; }

    int radius;

    public Circle( int radius,Color color)
    {
        this.radius = radius;
        this.Color = color;
    }
}
0 голосов
/ 27 июня 2011

Используйте приватное поле и выставляйте только геттер.Я также сделал бы перечисление общедоступным классом и передавал бы его напрямую:

   class Circle
{
    public const double PI = 3.14;
    private Color _color;
    int radius;
    public Circle(Color Color,int radius)
    {
        _color = Color;
        this.radius = radius;
    }

   public Color Color { return _color; }
}

public enum Color { Black, Yellow, Blue, Green }
0 голосов
/ 27 июня 2011

попробуйте этот код

 public  enum Color { Black, Yellow, Blue, Green };
class Circle
{
    public const double PI = 3.14;
    public readonly Color color;
    int radius;
    public Circle(Color color, int radius)
    {
        this.color = color;
        this.radius = radius;
    }
}

для использования

            Circle circle = new Circle(Color.Blue,100);
0 голосов
/ 27 июня 2011

Вам необходимо объявить enum, а затем использовать его как тип переменной.

public enum Color { Black, Yellow, Blue, Green };
public readonly Color myColor;
0 голосов
/ 27 июня 2011

Enum - это тип. Когда вы объявляете Enum, вы фактически определяете новый тип в вашей программе. Поэтому, если вы хотите передать значение Enum в качестве параметра, вам необходимо объявить параметр этого типа.

0 голосов
/ 27 июня 2011

Попробуйте это:

public enum ColorEnum {
    Black,
    Yellow,
    Blue,
    Green

}

public class Circle {
    public const double PI = System.Math.PI;
    public ColorEnum Color;

    public Circle(ColorEnum color,int radius)
    {
        this.radius = radius;
        this.Color = color
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...