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

3

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

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

这一切都很好运作,因为我可以声明一个新的FinishedPiece并添加属性:
FinishedPiece piece = new FinishedPiece();
piece.PieceLength = 48.25;

我的问题是,如何使用枚举完成同样的操作?如果我这样做
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
};

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


3
FinishedPiece 没有公共变量。它包含一个私有变量,该变量支持一个公共 属性 - Jon Skeet
Cut 不是整数。公共和私有必须是相同的类型。 - paparazzo
3个回答

10

我该如何将枚举类型的值存储在变量中,以便我可以执行 piece.Cut = Cut.Angle?

只需在你的类中定义另一个类型为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,请考虑使用自动实现属性


1
你比我早几分钟就提出了建议,并且提出了AIPs,这点让我非常佩服。 :0 - Khan
谢谢你的回答。我采纳了你关于API的建议,很有用!我总是喜欢尽可能地缩短我的代码,这确实有帮助。 - gnarlybracket
@gnarlybracket,欢迎您,只需记住自动实现的属性在内部使用私有后备字段。但它确实可以缩短代码。 - Habib

2

就像这样:

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;

0
你可以尝试这个:
    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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接