【问题标题】:Error occurs in using If statement in my TableAdapter在我的 TableAdapter 中使用 If 语句时发生错误
【发布时间】:2019-03-13 01:17:17
【问题描述】:

我目前在我以前的项目中使用 VB.NET。现在,从 VB.NET 切换到 C#。我尝试了一个在线转换器,但它似乎不起作用。我收到以下错误:

无法将 int 类型隐式转换为 bool。

这是我的代码:

String verify = txtVerify.Text;

if (tblStudentTableAdapter.FillByVerifyStudent(dbInfoDataSet.tblStudent, verify, verify, verify))
{
    MessageBox.Show("Matched");
}
else
{
    MessageBox.Show("No Result");
}

在 VB.NET 中,没有问题。请给我一个关于如何解决这个问题的想法。提前谢谢你

VB.NET 中的代码:

Dim verify as String = txtVerify.Text;

if tblStudentTableAdapter.FillByVerifyStudent(dbInfoDataSet.tblStudent, verify, verify, verify) Then
    MessageBox.Show("Matched");
else
    MessageBox.Show("No Result");
End If

【问题讨论】:

  • 什么不起作用?您收到什么错误消息?
  • 如果您的 VB 项目中有 Option Strict On,就像您应该的那样,那么该代码也不会在那里编译。 FillByVerifyStudent 方法返回一个Int32,而不是Boolean,因此它不能成为没有缩小转换的If 语句的条件,C# 不会隐式执行,VB 只能使用Option Strict Off .测试您实际需要测试的条件。
  • 错误是 - 不能将 int 类型隐式转换为 bool
  • @Joa.know 那么 jmcilhinney 的评论应该会回答你的问题。
  • 这段代码也不可能在 C# 中工作。

标签: c# vb.net vb.net-to-c#


【解决方案1】:

您可以使用Convert.ToBoolean(int) 方法将int 转换为bool。如果int 的值不为零,此方法将返回true

String verify = txtVerify.Text;

if (Convert.ToBoolean(tblStudentTableAdapter.FillByVerifyStudent(dbInfoDataSet.tblStudent, verify, verify, verify)))
{
    MessageBox.Show("Matched");
}
else
{
    MessageBox.Show("No Result");
}

【讨论】:

  • 使用Convert.ToBoolean 是可怕的,只需在末尾添加== 1
  • 成功了!实际上,我多次尝试使用 Convert Boolean ,但我放错了方向。无论如何,非常感谢你
  • 我也建议不要在这种情况下使用Convert.ToBoolean。解决这个问题的正确方法是考虑FillByVerifyStudent 返回的值的实际含义。与表适配器上的Fill... 方法一样,它只是在数据适配器上调用Fill 并返回结果,该结果是查询检索到的记录数。在这个特定的实例中,如果查询没有检索到记录,则没有匹配,该方法返回 0,否则返回一个大于零的数字。这就是您应该测试的内容,即if (… > 0 )
猜你喜欢
  • 1970-01-01
  • 2022-10-01
  • 2021-09-22
  • 1970-01-01
  • 2017-04-28
  • 2020-05-26
  • 1970-01-01
  • 2022-12-08
  • 2017-08-23
相关资源
最近更新 更多