对于我的程序,我创建了一个名为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; }
}
如果只有简单的set
和get
,请考虑使用自动实现的属性
像这样:
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;