如果两个开关中的任何一个被切换,我都试图显示一个显示警报。
这是我的if语句:
if(!SwitchOne.IsToggled || !SwitchTwo.IsToggled)
{
await DisplayAlert("Cannot save", "Enter info.", "Ok");
}
我希望在切换1个或两个开关时保存信息。但是,它似乎并不在乎||。在if语句中。当我同时切换两个开关时,我可以保存页面,并且DisplayAlert不会显示= great。当我仅切换一个开关时,将显示DisplayAlert。我不知道为什么,因为我有||在if语句中。
我不希望在切换任何开关时显示DisplayAlert。 感谢所有我能得到的帮助!
答案 0 :(得分:1)
对于您的情况,您需要使用&&
:
if(!SwitchOne.IsToggled && !SwitchTwo.IsToggled)
{
await DisplayAlert("Cannot save", "Enter info.", "Ok");
}
现在,仅当两个开关均未切换时,它才会显示警报。如果它们中的任何一个被切换,则警报不会立即显示。
switch1 == toggled | switch2 == toglled
true | true => Do not show alert
true | false => Do not show alert
false | true => Do not show alert
false | false => show alert
答案 1 :(得分:0)
您正在检查开关是否已关闭,因此很明显,如果只有一个开关处于关闭状态,则会显示该消息,如果两个开关都不处于关闭状态,则不会...您应该:
if(SwitchOne.IsToggled || SwitchTwo.IsToggled)
{
await DisplayAlert("Cannot save", "Enter info.", "Ok");
}
答案 2 :(得分:0)
您可以
if (!SwitchOne.IsToggled && !SwitchTwo.IsToggled)
如果仅切换一个开关(例如SwitchOne
),它将评估为:
if (!true && !false)
=> if (false & true)
=> if (false)
答案 3 :(得分:0)
如果您反转了一切,则可能更容易阅读,因为现在您正在测试否定响应的否定条件(如果未切换第一个开关而未切换第二个开关,那么我们将无法保存),有时可能会使阅读混乱。
这可能更具可读性:
if (SwitchOne.IsToggled || SwitchTwo.IsToggled)
{
// At least one switch is toggled - we can save!
}
else
{
await DisplayAlert("Cannot save", "Enter info.", "Ok");
}