【问题标题】:Overload invalid argument重载无效参数
【发布时间】:2012-11-07 03:05:25
【问题描述】:

嗨,我是全新的,所以不要对我的菜鸟问题做出严厉的判断,

namespace Oef5_3_ShowIncome
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, EventArgs e)
        {
            int YearSalary = Convert.ToInt32(YearSalaryTextBox.Text);
            int numberOfYears = Convert.ToInt32(numberOfYearsTextBox.Text);
            ShowIncome(YearSalary, numberOfYears);
            MessageBox.Show("something something ", Convert.ToString(ShowIncome)));
        }

        private int ShowIncome(int lalala, int dadada)
        {
            int results = lalala * dadada;
            return results;
        }
    }
}

in... MessageBox.Show("something something " Convert.ToString(ShowIncome))); 我收到以下错误:windows.form.messagebox.show(string, string) 的最佳重载方法匹配有一些无效参数。

【问题讨论】:

  • 11 个问题,0 个被接受。 Read the FAQ
  • 因为 ShowIncome 是一种方法。你的意思可能是MessageBox.Show("something something ", Convert.ToString(ShowIncome(YearSalary, numberOfYears))));
  • 先生,您应该回到之前的问题并接受一些答案。查看常见问题解答以获取说明(或者只需选择一个并单击旁边的大复选框。)

标签: c# forms overloading


【解决方案1】:
private void Button_Click(object sender, EventArgs e)
{
    int YearSalary = Convert.ToInt32(YearSalaryTextBox.Text);
    int numberOfYears = Convert.ToInt32(numberOfYearsTextBox.Text);
    int showInCome = ShowIncome(YearSalary, numberOfYears);
    MessageBox.Show("something something ", showInCome.ToString()));
}

【讨论】:

    【解决方案2】:

    在这一行中,您调用方法而不将结果保存到变量中

    ShowIncome(YearSalary, numberOfYears);
    

    你想做的是这个

    int result = ShowIncome(YearSalary, numberOfYears);
    

    然后将结果传递给消息框方法

    MessageBox.Show("something something ", result.ToString()));
    

    【讨论】:

    • 如果我想将结果保存到变量中并且仍然可以看到结果怎么办?例如在 ref 或 out 中?
    • 看到结果是什么意思? out 参数通过引用传递变量,因此如果您更改它,它会随处更改。
    【解决方案3】:
    int YearSalary = Convert.ToInt32(YearSalaryTextBox.Text);
            int numberOfYears = Convert.ToInt32(numberOfYearsTextBox.Text);
            ShowIncome(YearSalary, numberOfYears);
            MessageBox.Show("something something ", Convert.ToString(ShowIncome(100000, 5).ToString())));
    

    因为你在没有传递参数的情况下调用了方法。

    【讨论】:

      【解决方案4】:

      嗯,我相信你混淆了那里的解析器,它不知道将 ShowIncome 作为参数做什么

      private void Button_Click(object sender, EventArgs e)
              {
                  int YearSalary = Convert.ToInt32(YearSalaryTextBox.Text);
                  int numberOfYears = Convert.ToInt32(numberOfYearsTextBox.Text);
                  int income = ShowIncome(YearSalary, numberOfYears);
                  MessageBox.Show("something something ", Convert.ToString(income));
              }
      

      private void Button_Click(object sender, EventArgs e)
              {
                  int YearSalary = Convert.ToInt32(YearSalaryTextBox.Text);
                  int numberOfYears = Convert.ToInt32(numberOfYearsTextBox.Text);
                  MessageBox.Show("something something ", Convert.ToString(ShowIncome(YearSalary, numberOfYears)));
              }
      

      【讨论】:

        【解决方案5】:

        这是因为您没有将任何参数传递给 ShowIncome,因此您实际上是在尝试在方法组上调用 Convert.ToString。

        【讨论】:

        • 但是 YearSalary, numberOfYears 变成 lalala & dadada 对吧? (我只是取了一些愚蠢的随机名称),如果您尝试将其以字符串形式返回给您的消息框,我认为它应该正常工作..
        • @mrName 我并没有真正理解你所说的。这: Convert.ToString(ShowIncome) 不起作用,并且由于其内联而掩盖了真正的错误。它不会返回字符串,因为没有将方法组作为其唯一参数的 Convert.ToString 重载,因此您会看到错误。如果你调用 Convert.ToString(ShowIncome(someint, someint)) 或任何你想传入的整数,那么是的,这会起作用。
        【解决方案6】:

        大家好,我非常感谢你们,如果我再次遇到同样的错误,我学习了 2 种新方法如何绕过该错误,例如使用 ...result.ToString,甚至给出他们自己的论点作为结果.tostring(1000,500);

        但是,例如,如果我创建一个变量,我已经看到了我的问题的解决方案 int something = ShowIncome(YearSalary, numberOfYears);

        MessageBox.Show("yay random words laalala " + Convert.ToString(something));

        然后它以某种方式起作用,我希望我知道为什么

        【讨论】:

          猜你喜欢
          • 2015-08-18
          • 1970-01-01
          • 2022-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多