构造函数中的枚举 - 如何?

时间:2011-06-27 14:16:41

标签: c# enums

我的练习有问题:定义一个代表圆圈的类。保持pi值的常量定义类,以及在readonly中保持圆的颜色定义的变量。可能的颜色在枚举中定义。变量定义了类来保存圆的半径 以及计算对象周长和面积的函数。 这就是我所做的:

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

我不知道如何将枚举选择放在构造函数中。 谢谢你的帮助。

8 个答案:

答案 0 :(得分:10)

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(枚举类型,字符串值)。

答案 1 :(得分:4)

只需在类定义之外定义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;
    }
}

答案 2 :(得分:0)

试试这个:

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

答案 3 :(得分:0)

Enum是一种类型。声明枚举时,实际上是在程序中定义了一个新类型。因此,如果要将Enum值作为参数传递,则需要声明该类型的参数。

答案 4 :(得分:0)

您需要声明enum,然后将其用作变量类型。

public enum Color { Black, Yellow, Blue, Green };
public readonly Color myColor;

答案 5 :(得分:0)

试试这段代码

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

答案 6 :(得分:0)

使用私有字段并仅公开getter。我也将enum作为一个公共类并直接传递给它:

   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 }

答案 7 :(得分:0)

下面的内容

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