【发布时间】:2017-10-30 00:58:27
【问题描述】:
我今天可以使用以下构造(无法编译)
public enum RecordedOrPlayed
{
None {get,private set}
Recorded,
Played
}
enum SoundStatus = SoundStatus.None
这会有用吗?
编辑 - 回应评论
解释:
我想要一种方法来获得无法使用的首次价值。 II 有一个 Sound 类,它在创建时什么也没做。声音根据其状态做了不同的事情。该类可能被其他程序员使用。一旦它已经录制或播放,它就永远不会返回到无。当它不是一个选项时,我不希望智能感知提示无。从 C#7 开始,我们可以为属性做到这一点
public string str {get; private set;} = "First time only";
我意识到它可以用类似...的东西来完成
public RecordedOrPlayed recordedOrPlayed
{
get { return _recordedOrPlayed; }
set
{
if (value == RecordedOrPlayed.None)
throw new ArgumentException("yada yada");
_recordedOrPlayed = value;
}
}
...但是丑陋,一目了然,又增加了一个变量,需要10行代码来替换setter。
【问题讨论】:
-
你在问什么?
enum值是常量。您是说能够更改特定枚举常量的基础整数值会很有用吗?我怀疑你会为此找到很多共识。如果您需要类似的东西,我会创建一个包含int属性None、Recorded、Played等的类。 -
您的代码无法编译,因为语法和用法明显错误(如您所述)。你的问题也不清楚……
-
@BobKaufman 你们都是对的。我意识到有多种方法可以做同样的事情,但它不能解决智能感知问题。我可以使用布尔值吗?或 int?,带有访问器的结构或其他一些乍一看难以理解的迂回代码。见上文
-
@svek 见上,每条评论只能通知一个人
-
@Paulustrious - 请访问我们的帮助页面。在您的评论中,使用反引号(美国 QWERTY 键盘上的未移位波浪符“~”)分隔关键字。 “布尔?还是整数?”是模棱两可的。
bool?和bool?表示不同的东西。前者是结束一个问题,后者是Nullable<bool>的简写
标签: c# enums getter-setter