Hej, felet du gjort är helt enkelt att du namngett variabeln du försöker sätta värdet på till samma sak som propertyn.
Det som händer är att du när du sätter propertyn hamnar i en evighetsloop av anrop till sig själv.
Först måste jag påpeka att namngivningen på egenskaper följer s.k. CameCasing, dvs varje "del-ords" första bokstav skrivs i uppercase. Dvs PersonNummer, inte personnummer för egenskapen.
Nu, ditt problem är följande: personnummer = 3 kommer att anropa setter-funktionen för personnummer.
Det setter-funktionen gör är att anropa setter-funktionen.'
Som i sin tur anropar setter-funktionen...
Och så fortsätter det.
Om du namnger egenskapen efter standardsättet med CamelCasing så har du inte problemet, kompilatorn förstår skillnaden på "personnummer" och "PersonNummer".
Beroende på hur snäll lärare du har så kan det dessutom räcka med att använda en s.k. auto-property. Då skriver man inget värde själv utan deklarerar bara att man vill ha en getter och en setter och låter kompilatorn generera det hela.
Dvs:
public class Person
{
public Person(string ssnr)
{
SocialSecurityNumber = ssnr;
}
public string SocialSecurityNumber {get;set;}
}
(Engelska är standard för programmering..snälla använd inte svenska..)