【问题标题】:Compilation Error When using int.TryParse C#使用 int.TryParse C# 时出现编译错误
【发布时间】:2018-01-15 04:38:13
【问题描述】:

我一直在尝试将我的 int.parse 更改为 int.tryparse,因为我听说这是一种更好的方法。我不断收到错误,我真的不知道自己做错了什么。

int index = this.Controls.GetChildIndex(WorkflowStepPanel, false);
this.Controls.SetChildIndex(WorkflowStepPanel, 
int.Parse(WorkflowStepPanel.indexBox.Text));

我试过这段代码:

 int index = this.Controls.GetChildIndex(WorkflowStepPanel, false);
 this.Controls.SetChildIndex(WorkflowStepPanel, 
 int.TryParse(WorkflowStepPanel.indexBox.Text));

但是得到这个编译错误:

CS1501 方法“TryParse”没有重载需要 1 个参数

【问题讨论】:

  • 什么错误,以及当你遇到任何错误时indexbox.Text里面是什么?
  • 你遇到了什么错误?
  • “我不断收到错误” - 这不是一个足够具体的问题描述,您的问题不包括任何实际尝试调用 int.TryParse() (所以我们可以甚至不要猜测你得到了什么错误)。如果您想要任何有用的答案,您需要大幅改进这个问题。

标签: c# winforms compiler-errors


【解决方案1】:

只要Int32.TryParse 能够将输入转换为整数,它就会返回一个布尔值。您可以利用该行为来避免您的程序由于用户输入的无效数据而生成运行时异常,如下所示:

int newIndex = 0;
if (Int32.TryParse(WorkflowStepPanel.indexBox.Text, out newIndex))
{
    int index = this.Controls.GetChildIndex(WorkflowStepPanel, false);
    this.Controls.SetChildIndex(WorkflowStepPanel, newIndex);
}
else
{
    MessageBox.Show(String.Format(
        "You entered {0} and that's not a valid number", 
        WorkflowStepPanel.indexBox.Text));
}

这个 TryParse 方法的工作原理是尝试将第一个参数转换为整数值。如果成功,解析后的值将被放入out 变量中,该方法将返回true。如果输入无效,该方法将返回false,并将out 变量设置为零。

您的代码生成错误可能是因为 SetChildIndex 方法需要一个整数而不是布尔值。

【讨论】:

  • 如果转换成功,我建议对 OUT 参数进行更多说明。另外,不知道为什么第一个“索引”与“新索引”......显然从未使用过索引。
  • 其实out参数失败时会重新赋值给'0'...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-19
  • 2013-06-16
  • 2013-10-28
  • 1970-01-01
相关资源
最近更新 更多