Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 错误CS0151:类型为'method group';无法转换为整型、bool、char、string、enum或可为null的类型_C#_Switch Statement - Fatal编程技术网

C# 错误CS0151:类型为'method group';无法转换为整型、bool、char、string、enum或可为null的类型

C# 错误CS0151:类型为'method group';无法转换为整型、bool、char、string、enum或可为null的类型,c#,switch-statement,C#,Switch Statement,请帮助我在monodevelop for Unity3d上使用switch语句。我已经搜索了有关如何正确使用switch语句的详细信息,但即使如此,我还是得到了一个关于“方法组”的错误。我还是不明白我做错了什么 接受信息检查值的我的类: public int check (int info_check) { return info_check; } void onGUI() { switch(check) { case 1:

请帮助我在monodevelop for Unity3d上使用switch语句。我已经搜索了有关如何正确使用
switch
语句的详细信息,但即使如此,我还是得到了一个关于“方法组”的错误。我还是不明白我做错了什么

接受
信息检查值的我的类

public int check (int info_check)
{
    return info_check;  
}

void onGUI()
{
    switch(check)
    {
        case 1: 
            whatishiv();
            break;
        case 2:
            preventhiv(); 
            break;
        default:
            whatishiv();
            break;
    }
}
nurse_class db;
db = transform.GetComponent<nurse_class> ();
if(GUILayout.Button ("What is HIV?"))
{
    db.check(1);
}
if(GUILayout.Button ("How to prevent HIV?"))
{
    db.check(2);
}
我的类为
信息检查传递值

public int check (int info_check)
{
    return info_check;  
}

void onGUI()
{
    switch(check)
    {
        case 1: 
            whatishiv();
            break;
        case 2:
            preventhiv(); 
            break;
        default:
            whatishiv();
            break;
    }
}
nurse_class db;
db = transform.GetComponent<nurse_class> ();
if(GUILayout.Button ("What is HIV?"))
{
    db.check(1);
}
if(GUILayout.Button ("How to prevent HIV?"))
{
    db.check(2);
}
nurse_类数据库;
db=transform.GetComponent();
if(GUILayout.Button(“什么是艾滋病毒?”))
{
db.检查(1);
}
if(GUILayout.Button(“如何预防艾滋病毒?”)
{
db.检查(2);
}

检查
是一种方法。为方法声明参数时,该参数应具有与其关联的值,但您调用该方法时未向其发送参数。您应该这样称呼它:
检查(整数)


尽管您的
check
方法是多余的,因为它除了返回它的参数之外什么都不做

检查是一种方法。为方法声明参数时,该参数应具有与其关联的值,但您调用该方法时未向其发送参数。您应该这样称呼它:
检查(整数)


尽管您的
check
方法是多余的,因为它除了返回它的参数之外什么都不做

C#5.0规范的转换声明从$8.7.2开始

开关语句的控制类型由开关建立 表情

•如果开关表达式的类型为sbyte、byte、short、ushort, int、uint、long、ulong、bool、char、string或枚举类型,或者 是对应于这些类型之一的可空类型,则 switch语句的控制类型

•否则,必须仅进行一次用户定义的隐式转换(§6.4) 从开关表达式的类型存在到以下类型之一 可能的管理类型:sbyte、byte、short、ushort、int、uint、long、, ulong、char、string或,对应于以下类型之一的可空类型 那些类型

否则,如果不存在此类隐式转换,或者如果超过 如果存在此类隐式转换,则会发生编译时错误。

但是在您的例子中,您尝试将您的方法名称放在这个表达式部分中。这就是为什么会出现这个错误

相反,您可以使用switch语句上的任何整数值调用您的方法,如

switch(check(5))
{
    // your cases
}
顺便说一下,由于您的
check
方法不做任何操作就返回其参数值,因此我将删除此方法并直接使用常量值调用此switch语句

switch(5)
{
    // your cases
}

从$8.7.2开始,C#5.0规范的开关语句

开关语句的控制类型由开关建立 表情

•如果开关表达式的类型为sbyte、byte、short、ushort, int、uint、long、ulong、bool、char、string或枚举类型,或者 是对应于这些类型之一的可空类型,则 switch语句的控制类型

•否则,必须仅进行一次用户定义的隐式转换(§6.4) 从开关表达式的类型存在到以下类型之一 可能的管理类型:sbyte、byte、short、ushort、int、uint、long、, ulong、char、string或,对应于以下类型之一的可空类型 那些类型

否则,如果不存在此类隐式转换,或者如果超过 如果存在此类隐式转换,则会发生编译时错误。

但是在您的例子中,您尝试将您的方法名称放在这个表达式部分中。这就是为什么会出现这个错误

相反,您可以使用switch语句上的任何整数值调用您的方法,如

switch(check(5))
{
    // your cases
}
顺便说一下,由于您的
check
方法不做任何操作就返回其参数值,因此我将删除此方法并直接使用常量值调用此switch语句

switch(5)
{
    // your cases
}

你为什么不干脆用

void onGUI()
{
    switch(info_check)
    {
    case 1: whatishiv();
        break;
    case 2: preventhiv(); 
        break;
    default:whatishiv();
        break;
    }

}

你为什么不干脆用

void onGUI()
{
    switch(info_check)
    {
    case 1: whatishiv();
        break;
    case 2: preventhiv(); 
        break;
    default:whatishiv();
        break;
    }

}

我看不出你会在任何地方初始化检查变量。你是什么意思?我应该使用“public int check=0”吗?你的check方法除了返回它的参数外,什么都不做!?我看不出你会在任何地方初始化检查变量。你是什么意思?我应该使用“public int check=0”吗?你的check方法除了返回它的参数外,什么都不做!?