公共变量 .NET 中的 C# 枚举



对于我的程序,我创建了一个名为FinishedPiece的新类,其中包含许多可用于我的主程序的公共变量。例如:

class FinishedPiece
{
    private double _PieceLength;
    public double PieceLength
    {
         get { return _PieceLength; }
         set { _PieceLength = value; }
    }
}

这一切都工作正常,因为这样我就可以声明一个新的FinishedPiece并添加属性:

FinishedPiece piece = new FinishedPiece();
piece.PieceLength = 48.25;

我的问题是,enum怎么做?如果我这样做

public enum Cut
{
    Angle = 0,
    Straight = 1,
    AngleThenStraight = 2,
    StraightThenAngle = 3
};

那么我想像这样更改它: piece.Cut = Cut.Angle;但我只能通过声明一个新的FinishedPiece.Cut对象来更改它:

FinishedPiece.Cut cut = new FinishedPiece.Cut();
cut = FinishedPiece.Cut.Angle;

如何使enum在变量中可用,以便我可以执行piece.Cut = Cut.Angle?对我来说,做这样的事情是有意义的,但它似乎不起作用。

public int Cut
{
    get { return _Cut; }
    set { _Cut = value; }
}
private enum _Cut
{
    Angle = 0,
    Straight = 1,
    AngleThenStraight = 2,
    StraightThenAngle = 3
};

提前感谢!如果我的问题不清楚,请告诉我,我会尽力提供帮助。

如何使枚举在变量中可用,以便我可以这样做 块。切割=切割角度?

只需在类中定义另一个类型 Cut 的属性,如下所示:

public Cut Cut { get; set; }

然后你可以做:

FinishedPiece piece = new FinishedPiece();
piece.PieceLength = 48.25;
piece.Cut = Cut.Angle; //like this

所以你的班级喜欢:

class FinishedPiece
{
    private double _PieceLength;
    public double PieceLength
    {
        get { return _PieceLength; }
        set { _PieceLength = value; }
    }
    public Cut Cut { get; set; }
}

如果只有简单的setget,请考虑使用自动实现的属性

像这样:

class FinishedPiece
{
    private double _PieceLength;
    public double PieceLength
    {
        get { return _PieceLength; }
        set { _PieceLength = value; }
    }
    private Cut _Cut;
    public Cut Cut
    {
        get { return _Cut; }
        set { _Cut = value; }
    }
}
public enum Cut
{
    Angle = 0,
    Straight = 1,
    AngleThenStraight = 2,
    StraightThenAngle = 3
};

然后你可以做:

var piece = new FinishedPiece();
piece.Cut = Cut.AngleThenStraight;

你可以试试这个:

    private enum Cut
    {
        //if you dont want to use any of these values as defaults 
        //just add another value and in your class private member
        //assign it like for example a value called None
        Angle = 0,
        Straight = 1,
        AngleThenStraight = 2,
        StraightThenAngle = 3
    };
    public class FinishedPiece
    {
        //give it a default,if like stated in the enum you dont want
        //any of those values create a None and place it here as default.
        private Cut cutObj = Cut.Angle;
        public Cut CutObj
        {
            get { return cutObj; }
            set { cutObj = value; }
        }
    }

然后在您的调用代码中...

FinishedPiece piece = new FinishedPiece();
//if you dont want the default change it...
piece.CutObj = Cut.Straight;

最新更新