2013-06-03 80 views
1

我在我的應用程序中有一個語音類,並希望能夠看到它是否正在偵聽,錄製,聽寫或無響應;布爾類型值

我想什麼是可以做的是分配一些類型的變量(SpeechState)只是3個可能值1,和對證過,像這樣:

startListeningButton_Click(object sender, EventArgs e) 
{ 
    SpeechState = SpeechState.Listening; 
} 

stopListeningButton_Click(object sender, EventArgs e) 
{ 
    if(SpeechState.Listening) 
    { 
     // Code to STOP listening goes here. 
    } 
} 

我曾嘗試推行troolean,但這並不完全是我之後的事情。我以後東西與此類似:

if(checkBox1.CheckState == CheckState.Checked) 
{ 
    // Do something 
} 

我怎樣才能做到這一點?

+5

使一個'SpeechState' [枚舉](http://msdn.microsoft.com/en-us/library/sbbt4032(V = vs.110)的.aspx) ? –

+0

使用emumeration。 –

+1

Troolean:一種俚語,用於描述Microsoft Win32 API中許多地方使用的真/假/錯誤方案。它被用來描述什麼時候某事有3個狀態,相比之下,布爾有兩個狀態(通常是true或false)。 – RvdK

回答

14

你應該爲此做一個enum

public enum SpeechState 
{ 
    Listening, 
    Recording, 
    Dictating, 
    Unresponsive 
} 

然後,您可以準確地用這個作爲你的顯示設置,雖然檢查將是:

if(this.SpeechState == SpeechState.Listening) 

編輯迴應評論:

爲了將其放置在你的班上,你需要一個屬性來存儲它:

public class YourClass 
{ 
    public SpeechState SpeechState { get; set; } 
} 

然後,您可以將該類的此屬性設置爲一個值。

+0

我不認爲它在工作,當我嘗試這樣做時,無論我如何分配它,它都不起作用。我將如何分配給此? –

+1

@Jase - 它的工作原理。只要看看上面的鏈接的枚舉。 – Hogan

+1

@Jase你需要一個字段或屬性在你的類上:'public SpeechState SpeechState {get;組; }' –

4

使用枚舉:

public enum SpeechState 
{ 
    Listening, 
    Recording, 
    Dictating, 
    Unresponsive 
} 
+0

我不認爲這是工作時,當我嘗試這一點,無論我如何分配給它它不會工作。我將如何分配給此? –

+1

你說'SpeechState state = SpeechState.Recording;'枚舉是整數數據類型上的語法糖。每個值都是糖的整數值。在上面的例子中,「Listening」是0,「Recording」1,「Dictating」2和「Unresponsive」3。你也可以說'SpeechState state =(SpeechState)123456789;',這是完全合法的。沒有要求分配給枚舉的值實際上是*有效*的那個特定枚舉。 –

+0

@NicholasCarey,這是一個非常*甜美的答案。 – gunr2171