C# 特罗林类型值

C# 特罗林类型值,c#,.net,C#,.net,我在我的应用程序中有一个演讲课,我想看看它是在听、录音、听写还是没有反应 我想做的是能够将某种变量(SpeechState)指定为3个可能值中的1个,并对其进行检查,如下所示: startListeningButton_Click(object sender, EventArgs e) { SpeechState = SpeechState.Listening; } stopListeningButton_Click(object sender, EventArgs e) { if

我在我的应用程序中有一个演讲课,我想看看它是在听、录音、听写还是没有反应

我想做的是能够将某种变量(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.
   }
}
我已经尝试过实现Troolian,但这并不完全是我想要的。我想要的是类似的东西:

if(checkBox1.CheckState == CheckState.Checked)
{
   // Do something
}
我怎样才能做到这一点呢?

你应该为此做出努力

public enum SpeechState
{
   Listening,
   Recording,
   Dictating,
   Unresponsive
}
然后,您可以完全按照所显示的设置来使用此选项,尽管检查内容为:

if(this.SpeechState == SpeechState.Listening)

根据评论进行编辑:

为了将其放置在类中,您需要一个属性来存储它:

public class YourClass
{
     public SpeechState SpeechState { get; set; }
}
然后,您可以将类的此属性设置为一个值。

您应该为此设置一个值

public enum SpeechState
{
   Listening,
   Recording,
   Dictating,
   Unresponsive
}
然后,您可以完全按照所显示的设置来使用此选项,尽管检查内容为:

if(this.SpeechState == SpeechState.Listening)

根据评论进行编辑:

为了将其放置在类中,您需要一个属性来存储它:

public class YourClass
{
     public SpeechState SpeechState { get; set; }
}
然后,可以将类的此属性设置为值。

使用枚举:

 public enum SpeechState
 {
     Listening,
     Recording,
     Dictating,
     Unresponsive
 }
使用枚举:

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


制作一个
SpeechState
?Trolean:一个俚语,用来描述在Win32 API的许多地方使用的微软的真/假/错误方案。它用来描述什么东西有三种状态,而布尔值有两种状态(通常为真或假)。另一个区别是使用可为空的布尔值。这允许3种状态,如果您将其存储在数据库中,这会有所帮助。Trolean是一个可怕的词。@Hogan:Troolin是。创建一个
SpeechState
?Trolean:一个俚语,用来描述在Win32 API的许多地方使用的Microsoft的真/假/错误方案。它用来描述什么东西有三种状态,而布尔值有两种状态(通常为真或假)。另一个区别是使用可为空的布尔值。这允许3种状态,如果您将其存储在数据库中,这会很有帮助。Trolean是一个可怕的词。@Hogan:Troolin是。我试着这样做时,我认为它不起作用,无论我如何分配它都不起作用。我该如何分配它?你说
SpeechState=SpeechState.Recording枚举是整数数据类型之上的语法糖。每个值都是一个整数值。在上面的示例中,
监听
为0,
录制
1,
听写
2,
无响应
3。你也可以说
SpeechState=(SpeechState)123456789,这是完全合法的。没有要求分配给某个枚举的值对该特定枚举实际有效。@NicholasCarey,这是一个很好的答案。当我尝试此操作时,我认为它不起作用,无论我如何分配它都不起作用。我该如何分配它?你说
SpeechState=SpeechState.Recording枚举是整数数据类型之上的语法糖。每个值都是一个整数值。在上面的示例中,
监听
为0,
录制
1,
听写
2,
无响应
3。你也可以说
SpeechState=(SpeechState)123456789,这是完全合法的。没有要求分配给某个枚举的值对该特定枚举实际有效。@NicholasCarey,这是一个很好的答案。当我尝试此操作时,我认为它不起作用,无论我如何分配它都不起作用。我该如何分配给它?@Jase您的类上需要一个字段或属性:
public SpeechState SpeechState{get;set;}
可能应该调用
SpeechState
枚举其他内容,比如
if(this.mySpeechState==SpeechState.listing)
?用与类型相同的名称调用实例化将不起作用?@John有什么原因吗?使用这个名称可以很清楚地说明属性是什么——首先有名字被选中的原因:(参见<代码>复选框。CealStest< /Cord>)一个很好的例子:“我想我在想C++不是C。当我尝试这个时,我认为它不起作用,无论我如何尝试分配给它,它都不会起作用。我该如何分配给它?@Jase您的类上需要一个字段或属性:
public SpeechState SpeechState{get;set;}
可能应该调用
SpeechState
枚举其他内容,比如
if(this.mySpeechState==SpeechState.listing)
?用与类型相同的名称调用实例化将不起作用?@John有什么原因吗?使用这个名称可以很清楚地说明属性是什么——首先有名字被选中的原因:(参见<代码>复选框。CealStest< /Cord>)一个很好的例子:“我想我在想C++不是C。