C# 方法没有重载
你好,这是我在Stacloverflow上的第一篇帖子。当我尝试运行下面的代码时,我得到了错误C# 方法没有重载,c#,class,methods,constructor,C#,Class,Methods,Constructor,你好,这是我在Stacloverflow上的第一篇帖子。当我尝试运行下面的代码时,我得到了错误方法'beräkna'的无重载值为0个参数。错误出现在按钮1中。我该如何解决这个问题 代码应根据用户单击按钮1时在textBox1中注册的出生登记号码计算用户的年龄 private void Form1_Load(object sender, EventArgs e) { } //4A Konstruera en klass som ska användas för
方法'beräkna'的无重载值为0个参数
。错误出现在按钮1
中。我该如何解决这个问题
代码应根据用户单击按钮1时在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
的方法,它至少不需要一个参数参数。您的签名指定需要一个整数,personnummer
。编译器无法神奇地为您生成此值(在本例中不能忽略,好像是可选的),您需要提供它。您正在调用beräkna
,没有任何参数。但这并没有过载。您应该使用personnumer
作为参数
尝试使用int
参数
private void beräkna(int personnummer)
您正在调用没有参数的
beräkna
,但是没有参数它就没有重载。因此,您必须通过personnumer
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
}
很明显,你称之为“beräkna”,没有争论。“beräkna”的唯一定义是一个int。英语中的那些关键词。。我不能看他们