嗨,我有这个代码,并且一直在说
无法将类型'int'隐式转换为'bool'“
每个“月= 1”,“月= 2”等等......有人可以帮忙吗?
public static string NumberToMonth(int month)
{
if (month = 1)
return "január";
if (month = 2)
return "február";
if (month = 3)
return "március";
if (month = 4)
return "április";
if (month = 5)
return "május";
if (month = 6)
return "június";
if (month = 7)
return "július";
if (month = 8)
return "augusztus";
if (month = 9)
return "szeptember";
if (month = 10)
return "október";
if (month = 11)
return "november";
if (month = 12)
return "december";
else
return "";
答案 0 :(得分:3)
使用==
而非=
。
=
是assigning operator。在这一行if(month = 1)
中,您将1分配到month
。==
是equality operator,用于检查两个值/对象是否为
相等。代码应该是:
if (month == 1)
return "január";
当您使用=
时:
month
,因此现在月份包含值1。month
语句评估if
。if
语句基本上为if(1)
,其中boolean
而不是int
。int
到bool
的隐式转换以及编译
错误。使用内置函数代替编写自己的方法来检索月份名称:请参阅this answer
string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(8);
答案 1 :(得分:2)
您的问题的解决方案已经得到解答。
消息“无法将类型'int'隐式转换为'bool'”的原因是month = 1
是一个表达式
month
和1
)所以编译器看到if (1)
,这意味着有一个整数值,其中有一个布尔值。所以它抱怨了。
答案 2 :(得分:1)
=
是赋值运算符,因此表达式month = 1
正在尝试将1
的值赋给month
。你想要的是==
,它是相等运算符。因此,您要将if
条件更改为以下格式:
if (month == 1)
{
return "január";
}
关于错误消息的原因,这是因为您正在执行分配而不是比较。用简单的英语,您可以执行以下操作:
1
已分配给month
。if
条件现为:if 1 is true
。所以你基本上问了一个无法回答的问题。以编程方式,发生了以下情况:
1
的值分配给month
。if
条件变为if (1)
,其中1
为int
,但条件应评估为true
或false
(即bool
)。因此,编译器抱怨,因为它需要bool
,但你给它一个int
。