请帮我在Unity3d的monodevelop上使用switch语句。我已经搜索了有关如何正确使用switch
语句的详细信息,但即使这样,我也会收到关于'方法组的错误消息。我仍然无法得到我做错的事。
我接受info_check
的值的课程:
public int check (int info_check)
{
return info_check;
}
void onGUI()
{
switch(check)
{
case 1:
whatishiv();
break;
case 2:
preventhiv();
break;
default:
whatishiv();
break;
}
}
我的班级传递info_check
的值:
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);
}
答案 0 :(得分:3)
check
是一种方法。为方法声明参数时,该参数应具有与之关联的值,但您调用该方法时不向其发送参数。您应该这样称呼它:check(an integer number)
:
void onGUI()
{
switch(check(1))
{
case 1:
whatishiv();
break;
case 2:
preventhiv();
break;
default:
whatishiv();
break;
}
}
虽然你的check
方法是多余的,因为它除了返回参数外没有做任何事情!
答案 1 :(得分:1)
来自$ 8.7.2 C#5.0规范的开关声明;
switch语句的管理类型由交换机建立 表达。
•如果switch表达式的类型是sbyte,byte,short,ushort, int,uint,long,ulong,bool,char,string或enum-type,或者如果它 是可以为这些类型之一的可空类型,那就是 switch语句的控制类型。
•否则,只需要一个用户定义的隐式转换(第6.4节) 从switch表达式的类型到以下之一 可能的管理类型:sbyte,byte,short,ushort,int,uint,long, ulong,char,string或者,对应于其中一个的可空类型 那些类型。
•否则,如果不存在此类隐式转换,或者如果不存在 存在一个这样的隐式转换,发生编译时错误。
但在您的情况下,您尝试只是将您的方法名称放在此表达式部分中。这就是你得到这个错误的原因。
而不是那样,你可以在switch语句中使用任何整数值调用你的方法,如;
switch(check(5))
{
// your cases
}
顺便说一句,由于你的check
方法返回它的参数值而不做任何,我会删除这个方法并直接用常量值调用这个switch语句。
switch(5)
{
// your cases
}
答案 2 :(得分:0)
为什么不简单地使用
fflush(stdin)