我可以用下面的構造今日(不編譯)枚舉setter和getter
public enum RecordedOrPlayed
{
None {get,private set}
Recorded,
Played
}
enum SoundStatus = SoundStatus.None
這將是有用的?
編輯 - 響應言論
說明:
我想具有不能使用的第一時間值的方式。 II有一個Sound類,創建時什麼都不做。聲音根據其狀態做了不同的事情。該類可以被其他程序員使用。一旦它錄製或播放,它永遠不會返回None。當它不是一個選項時,我不希望智能感知提示None。由於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'等的類。 –
你的代碼不會編譯,因爲語法和用法顯然是錯誤的說明)。你的問題也不清楚... – Svek
@BobKaufman你是對的。我意識到做同樣的事情有多種方式,但它不能解決intellisense問題。我可以用一個布爾?或int?,一個帶有訪問器的結構或其他一些難以理解的代碼。見上面 – Paulustrious