无法将类型“void”隐式转换为“bool”Xamarin 警报

Posted

技术标签:

【中文标题】无法将类型“void”隐式转换为“bool”Xamarin 警报【英文标题】:Cannot implicitly convert type 'void' to 'bool' Xamarin alert 【发布时间】:2017-10-05 17:14:33 【问题描述】:

所以,我一直在尝试使用带有回调的警报。我希望用户在单击“确定”按钮时返回主页。

根据 来自 *** 的 Xamarin 文档:/documentation/xamarin.forms/4883/display-alert#t=20171005164124370635 我做得很好,但我无法让它工作。已经尝试过不同的声明方法,但似乎没有任何效果。

    async void ConfirmationAlert(String resp)
        if (await DisplayAlert(resp, "", "OK"))
        
            MasterLogin.Perfil mPerfil = new MasterLogin.Perfil();
            mPerfil.mainPage = mainPage;
            mainPage.Master = mPerfil;
        
    

【问题讨论】:

请显示出现错误的代码。是什么让您认为我们可以猜出您粘贴的部分 URL 的域? DisplayAlert() 返回什么,只是简单的任务? 很抱歉,*** 不允许我发布完整链接,所以我提到它是 *** 的文档,它是 ***.com/doc... 由于标题@第2行提到的错误,它现在甚至无法编译。 【参考方案1】:

您调用返回 void 的重载,请参阅 Display Alert Void 和 Display Alert Bool 您需要提供参数 string accept 以获得正确的重载。

【讨论】:

有string参数,唯一没有包含的就是cancel参数。我是否也需要包含那个才能让它工作? 只需去掉 IF 语句。如果他们只能选择 OK,那么测试响应毫无意义。 是的,返回Task<bool> 的方法需要所有四个参数才能为用户提供选择,bool 代表该选择。只提供三个参数不会给用户选择,因此不会返回值。 看起来它确实是必须包含的第四个参数才能使其工作。现在它可以正常工作了。【参考方案2】:

带有三个参数的DisplayAlert 不会返回bool,因此您不能在if 语句中使用它。

【讨论】:

以上是关于无法将类型“void”隐式转换为“bool”Xamarin 警报的主要内容,如果未能解决你的问题,请参考以下文章

解决Html.CheckBoxFor中”无法将类型 bool 隐式转换为 bool。存在一个显式转换..."的方法

C++,bool 转换是不是总是退回到 void* 的隐式转换?

vs里面bool类型如何转换为string类型

向启用文本框 (C#) 的 Web 部件添加按钮,出现错误:无法将类型“bool”隐式转换为“字符串”

为啥在我的 Web 服务中调用此方法时出现错误“无法将类型 'void' 隐式转换为 'string'?

C#中提示无法将string隐式转换为bool类型,请问怎么办?