公共 bool 方法不能将类型“bool”隐式转换为“void”
Posted
技术标签:
【中文标题】公共 bool 方法不能将类型“bool”隐式转换为“void”【英文标题】:public bool method Cannot implicitly convert type `bool' to `void' 【发布时间】:2014-07-29 00:54:01 【问题描述】:我正在为我的 android 游戏实现 google play sdk,到目前为止,我已经完成了登录和排行榜部分,但添加成就给我带来了一些麻烦,因为我使用 public bool 方法让我的生活更轻松,以便将来更新并标记成就解锁。
由于某种原因,我收到此错误:
无法隐式转换类型bool' to
void'
public bool unlockAchievement(string achievementName, string achievementID)
if(loggedIn == true)
Social.ReportProgress(achievementID, 100.0f, (bool success) =>
return success;
);
else return false;
我想我涵盖了任何松散的结局,但我得到了这个错误。
感谢任何帮助。 谢谢。
编辑:
看起来像这样工作
public bool unlockAchievement(string achievementName, string achievementID)
bool actionDone = false;
if(loggedIn == true)
Social.ReportProgress(achievementID, 100.0f, (bool success) =>
if(success) actionDone = true;
else actionDone = false;
);
return actionDone;
else return actionDone;
谢谢
【问题讨论】:
请注意,您编辑中的解决方案仅在传递给 Social.ReportProgress 的回调同步运行时才有效。如果在 ReportProgress 返回之前没有立即调用该方法,则 actionDone 将保持为 false,并且当回调确实被调用时,什么都不会发生。 是的,我正在考虑,我必须做一些测试,看看结果如何。 【参考方案1】:您的 lambda 是一个封闭的方法,因此 return 语句的上下文是 lambda 方法,而不是 unlockAchievement
。
您可能希望重构代码以使用回调,即类似这样的内容:
public void unlockAchievement(string achievementName, string achievementID, Action<bool> callback)
if(loggedIn == true)
Social.ReportProgress(achievementID, 100.0f, (bool success) =>
callback(success);
);
else callback(false);
【讨论】:
以上是关于公共 bool 方法不能将类型“bool”隐式转换为“void”的主要内容,如果未能解决你的问题,请参考以下文章
无法将类型“void”隐式转换为“bool”Xamarin 警报
windows编程问题 错误提示“int无法隐式转换为bool”
在构造 std::variant 时禁用从指针类型到 bool 的隐式转换的最佳方法是啥?
C#中提示无法将string隐式转换为bool类型,请问怎么办?