【问题标题】:C# - No argument for required formal parameter?C# - 所需的形式参数没有参数?
【发布时间】:2018-05-08 06:50:40
【问题描述】:

我收到的错误如下:没有给出与“VitalsForm.SetOverallHypertensionLevel(int, int)”所需的形式参数“bloodPressureSystolicLevel”相对应的参数。错误实际上出现在我调用方法的行,SetOverallHypertensionLevel();

调用方法:

    private void picSubmitVitals_Click(object sender, EventArgs e)
    {

        SetOverallHypertensionLevel();
     }

方法:

    private void SetOverallHypertensionLevel(int bloodPressureSystolicLevel, int bloodPressureDiastolicLevel)
    {
        bloodPressureSystolicLevel = Convert.ToInt32(txtSystolic);
        bloodPressureDiastolicLevel = Convert.ToInt32(txtDiastolic);

        if ((bloodPressureSystolicLevel / 200) > (bloodPressureDiastolicLevel / 133))
        {
            if (bloodPressureSystolicLevel >= 160)
            {
                lblHyperStage2.ForeColor = colorSchemeIssue;
            }
            else if (bloodPressureSystolicLevel >= 140)
            {
                lblHyperStage1.ForeColor = colorSchemeIssue;
            }
            else if (bloodPressureSystolicLevel >= 120)
            {
                lblHyperPre.ForeColor = colorSchemeWarning;
            }
            else
            {
                lblHyperNormal.ForeColor = colorSchemeNormal;
            }
        }
        else
        {
                if (bloodPressureDiastolicLevel >= 100)
                {
                    lblHyperStage2.ForeColor = colorSchemeIssue;
                }
                else if (bloodPressureDiastolicLevel >= 90)
                {
                    lblHyperStage1.ForeColor = colorSchemeIssue;
                }
                else if (bloodPressureSystolicLevel >= 80)
                {
                    lblHyperPre.ForeColor = colorSchemeWarning;
                }
                else
                {
                    lblHyperNormal.ForeColor = colorSchemeNormal;
                }

为什么不识别参数的使用?任何帮助表示赞赏。

【问题讨论】:

  • 能否显示调用此方法的代码?
  • 你怎么打电话给SetOverallHypertensionLevel?可能没有参数。
  • 在您说“'VitalsForm.SetOverallHypertensionLevel(int, int)'”的问题中,如果这是您用来调用该方法的代码,那么看起来您没有传入值,但是您将int 类型放置在int 类型的变量所属的位置
  • 我在上面加了!
  • 谢谢!你能举个例子吗?显然我对此很陌生。

标签: c#


【解决方案1】:
private void SetOverallHypertensionLevel(int bloodPressureSystolicLevel, int bloodPressureDiastolicLevel)
{
    bloodPressureSystolicLevel = Convert.ToInt32(txtSystolic);
    bloodPressureDiastolicLevel = Convert.ToInt32(txtDiastolic);

应该可以转换为:

private void SetOverallHypertensionLevel()
{
    var bloodPressureSystolicLevel = Convert.ToInt32(txtSystolic);
    var bloodPressureDiastolicLevel = Convert.ToInt32(txtDiastolic);

因为看起来您想要变量而不是参数

如果你这样做,你的SetOverallHypertensionLevel(); 电话将起作用。

【讨论】:

  • 这确实可以消除通话中的错误,但是我的 if 语句不起作用。
  • @Jen - 您的 if 语句可能无法按预期工作,因为您将 int 除以 int。这将产生截断的 int 结果。除以200.0133.0,这将强制计算为浮点数,因此更具可比性。
  • @Jen StackOverflow 的工作方式是您应该在每个帖子中问一个问题。回答该问题 (Why isn't it recognizing the use of the parameters?) 后,如果您有其他问题(例如未处理的异常),您应该提出一个单独的问题
【解决方案2】:

当你调用你的方法时

SetOverallHypertensionLevel();

您需要为方法签名中定义的参数传入所需的参数。

SetOverallHypertensionLevel(int bloodPressureSystolicLevel, int bloodPressureDiastolicLevel)

因此,正确调用该方法的示例如下:

SetOverallHypertensionLevel(1,1);

您只需要提供您的方法所需的int 值。

【讨论】:

  • 在这种情况下,值将根据用户输入而有所不同,因此我无法对整数进行硬编码(请参阅上面的 Convert 和 If / else-if 语句)。如果我使用 SetOverallHypertensionLevel(int bloodPressureSystolicLevel, int bloodPressureDiastolicLevel);它不起作用,或者如果我尝试 SetOverallHypertensionLevel(bloodPressureSystolicLevel, bloodPressureDiastolicLevel);
  • 或者,从方法签名中删除这两个参数,因为它们的值填充在方法的前两行(无论如何都会覆盖传入的值)。
  • @hatchet,消除了参数错误,但随后填充的值遇到了未处理的异常。
  • mjwills 的答案是正确的答案。如果您遵循这一点,那么下一个可能的问题是txtSystolictxtDiastolic 是否在其他地方正确声明和填充,但是由于您没有包含该代码,所以很难说。那将是一个单独的问题。
  • @mjwills,该方法仍然无效,所以它没有解决我的问题。不过,我已经做出了这些改变。斧头,我确实在其他地方声明并填充了这些,所以我将努力将它们转移到更广泛的类别。谢谢!
猜你喜欢
  • 2017-09-30
  • 1970-01-01
  • 2016-05-13
  • 1970-01-01
  • 2019-06-30
  • 1970-01-01
  • 2016-11-11
  • 1970-01-01
相关资源
最近更新 更多