CS0029错误求助:无法将void隐式转换为string的问题排查
解决“Cannot implicitly convert type 'void' to 'string'”错误
错误原因
你的WinOrLose方法声明返回string类型,但方法内部的return Console.WriteLine("...")存在问题——Console.WriteLine()本身是**无返回值(void)**的方法,你试图把一个void类型的结果当作string返回,这就触发了类型不匹配的错误。
修复方案(两种可选)
方案1:让WinOrLose返回字符串,在调用处输出
修改WinOrLose方法,只返回判断后的文本,把输出逻辑移到调用它的地方:
string WinOrLose(int dice, int goal) { if (dice > goal) { return "Congratulations, You won!"; } else { return "Sorry, You have lost!"; } }
PlayGame里的调用代码保持不变,因为现在WinOrLose返回的是string,刚好可以传给Console.WriteLine()输出。
方案2:让WinOrLose直接输出结果,返回void
如果不需要WinOrLose返回字符串,直接让它负责输出,同时修改方法的返回类型为void:
void WinOrLose(int dice, int goal) { if (dice > goal) { Console.WriteLine("Congratulations, You won!"); } else { Console.WriteLine("Sorry, You have lost!"); } }
然后修改PlayGame里的调用代码,直接调用方法即可,不用再包一层Console.WriteLine():
// 原来的Console.WriteLine(WinOrLose(roll, target)); 改成: WinOrLose(roll, target);
验证效果
两种方案都能解决类型不匹配的错误,运行程序后会正常输出胜负结果,同时不再触发CS0029错误。
内容的提问来源于stack exchange,提问作者Nathan Shetzler
相关产品推荐
相关产品推荐

