【问题标题】:No overload for method [closed]方法没有重载[关闭]
【发布时间】:2013-01-11 10:01:33
【问题描述】:

您好,这是我在 Stacloverflow 上的第一篇文章。当我尝试在下面运行此代码时,我收到错误 no overload for method 'beräkna' takes 0 arguments。错误在button1 中。我该如何解决这个问题?

代码应根据用户点击button1按钮时在textBox1注册的出生登记号计算用户年龄。

   private void Form1_Load(object sender, EventArgs e)
    {

    }


    //4A Konstruera en klass som ska användas för att beskriva personer (människor). Definiera både
    // klassnamnet och deklarera 8-10 lämpliga medlemmar.
    class människor
    {
        string förnamn, efternamn, hårfärg, ögonfärg, ursprung;
        int personnummer, ålder, skostorlek;
        double längd;


        public människor()
        {
            personnummer = 19910611;

        }
    }
    // 5D Deklarera och konstruera kod för en metod som beräknar ålder för en person utifrån
    // personnumret. Åldern ska returneras som hela antal år.
    public void beräknaÅlder(int personnummer)
    {

        beräkna(personnummer);

    }
    //5E Skriv om metoden ovan så att själva åldersberäkningen görs i en gömd (privat) metod som
    // metoden i d) använder sig av internt.
    private void beräkna(int personnummer)
    {


       int personnr = personnummer;

      bool flagCheck = true;
      if (flagCheck == true)
      {

          int personnummer2 = int.Parse(textBox1.Text);
          string nyttpersonnummer = personnummer2.ToString();
          DateTime oldDateTime = new DateTime();
          oldDateTime = DateTime.ParseExact(nyttpersonnummer, "yyyyMMdd", null);
          // DateTime.Now - personnumer;
          TimeSpan elapsed = DateTime.Today.Subtract(oldDateTime);
          double ålder = elapsed.TotalDays / 365.25;
          double helålder = Math.Floor(ålder);
          richTextBox1.Text = ("Din ålder är " + helålder.ToString());
      }
      else if (flagCheck == false)
      {
          richTextBox1.Text = ("Din ålder är " + personnr);
      }
        }




    private void button1_Click(object sender, EventArgs e)
    {

        beräkna();

    }
}

}

【问题讨论】:

  • 很明显,您称“beräkna”是零争论。 'beräkna' 的唯一定义需要一个整数。
  • 那些英文关键词..我看不出来

标签: c# class methods constructor


【解决方案1】:

您没有定义一个名为beräkna 的方法,它不需要至少一个参数参数。您拥有的签名指定需要一个整数,personnummer。编译器不能神奇地为你生成这个值(在这种情况下也不能像可选一样忽略),你应该提供它。

【讨论】:

    【解决方案2】:

    您正在调用beräkna,没有任何参数。但这并没有重载。您应该使用personnummer 作为参数。

    尝试使用int 参数;

    private void beräkna(int personnummer)
    

    【讨论】:

      【解决方案3】:

      你在没有参数的情况下调用beräkna,但它没有没有参数的重载。所以你必须通过personnummer

      beräkna(19910611);
      

      您可以使用此代码计算某人的年龄:

      DateTime today = DateTime.Today;
      DateTime birthDate;
      if (DateTime.TryParseExact(personnummer2.ToString(), "yyyyMMdd", null, DateTimeStyles.None, out birthDate))
      {
          int age = today.Year - birthDate.Year;
          if (birthDate > today.AddYears(-age)) age--;
          // output 
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-16
        • 1970-01-01
        • 1970-01-01
        • 2023-03-02
        • 1970-01-01
        相关资源
        最近更新 更多