更改枚举值
Change value of Enum
我正在阅读有关 Enums
的文章,并遇到了一个例子,作者展示了我们如何 typecast
一个 enum
到 int
和一个 int
到 enum
。但是我不知道如何通过创建 TrickScore
.
类型的引用来更改枚举的值
public enum TrickScore {
Sit = 7,
Beg = 25,
RollOver = 50,
Fetch = 10,
ComeHere = 5,
Speak = 30,
}
此代码块更改 Fetch
枚举的值。我无法理解分数如何设置为 TrickScore.Fetch
。当我调用 score.ToString()
时,它 returns Fetch
.
int value = (int)TrickScore.Fetch * 3;
MessageBox.Show(value.ToString());
TrickScore score = (TrickScore)value;
MessageBox.Show(score.ToString());
恐怕您对enums
的理解不太正确。这行代码:
int value = (int)TrickScore.Fetch * 3;
不会更改 TrickScore.Fetch
的值。它将 TrickScore.Fetch
(10) 的值乘以 3 并将其分配给变量 value
。在这种情况下,您使用 TrickScore.Fetch
几乎就像它是一个保留数字的变量一样。当你有类似 y = x * 5
的东西时,你不会更改 x
的值。仅将结果分配给 y
.
代码中执行某项操作的下一行是:
TrickScore score = (TrickScore)value;
因此,您从之前的操作中获得了变量 value
(30)。您将该值转换为 TrickScore
枚举类型。具有此编号的项目是 Speak
,它被分配给 score
变量。
值得注意的一件事是,仅仅因为 enum
继承自 int
并不意味着对 enums
执行算术运算是一个好习惯。我会避免将它们投射到 int
s 上并执行数学运算。毕竟将 TrickScore.Beg
和 TrickScore.ComeHere
相加并期望得到 TrickScore.Speak
真的有意义吗?
我正在阅读有关 Enums
的文章,并遇到了一个例子,作者展示了我们如何 typecast
一个 enum
到 int
和一个 int
到 enum
。但是我不知道如何通过创建 TrickScore
.
public enum TrickScore {
Sit = 7,
Beg = 25,
RollOver = 50,
Fetch = 10,
ComeHere = 5,
Speak = 30,
}
此代码块更改 Fetch
枚举的值。我无法理解分数如何设置为 TrickScore.Fetch
。当我调用 score.ToString()
时,它 returns Fetch
.
int value = (int)TrickScore.Fetch * 3;
MessageBox.Show(value.ToString());
TrickScore score = (TrickScore)value;
MessageBox.Show(score.ToString());
恐怕您对enums
的理解不太正确。这行代码:
int value = (int)TrickScore.Fetch * 3;
不会更改 TrickScore.Fetch
的值。它将 TrickScore.Fetch
(10) 的值乘以 3 并将其分配给变量 value
。在这种情况下,您使用 TrickScore.Fetch
几乎就像它是一个保留数字的变量一样。当你有类似 y = x * 5
的东西时,你不会更改 x
的值。仅将结果分配给 y
.
代码中执行某项操作的下一行是:
TrickScore score = (TrickScore)value;
因此,您从之前的操作中获得了变量 value
(30)。您将该值转换为 TrickScore
枚举类型。具有此编号的项目是 Speak
,它被分配给 score
变量。
值得注意的一件事是,仅仅因为 enum
继承自 int
并不意味着对 enums
执行算术运算是一个好习惯。我会避免将它们投射到 int
s 上并执行数学运算。毕竟将 TrickScore.Beg
和 TrickScore.ComeHere
相加并期望得到 TrickScore.Speak
真的有意义吗?