Permalänk
Medlem

C# Hjälp om Get & Set

Någon som skulle kunna hjälpa mig med en C# kod?
Läser på distans så finns ingen jag kan fråga om hjälp, problemet är att jag inte riktigt fattar detta med get & set.. Jag skrev att en kod direkt ifrån boken men inte ens den funkar i Visual, aja lite skumt.. Ser ni problemet kanske? (Får error med get & set)

http://pastebin.com/P1ZQCSR0

Tack på förhand! Prov på torsdag så måste lära mig detta om get & set snarast

Permalänk
Medlem

Vilja våld o vaselin brukar man säga, löste det..
Dethär med get & set är skumma saker, lite surt att boken lär ut fel..
http://pastebin.com/1XKQVMrF

Permalänk
Medlem

Du menar inte properties?

private string myString; public string MyString { get { return myString; } set { if (myString != value) myString = value; } }

Permalänk

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..)

Visa signatur

Pain, Agony, Suffering, Torment. When the Rune is invoked, even the earth shall resonate its anguish.
Torment of the mind. Torment of the body. Torment of the soul. All will be made clear when the circle is drawn.

Permalänk
Medlem
Skrivet av Shadowsoul:

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..)

Hehe , ska ta åt mig det du skrivt
Slutprov på torsdag, ska använda båda sätten så kan dem ju inte klaga :>
Tack!

Permalänk
Medlem

instämmer med Shadowsoul, håll dig till engelska när du programmerar, det är både snyggare och mer praktiskt.
du har redan fått bra tips angående arbetet du postade, men vill tillägga en korrigering (förutsatt du hinner se detta innan provet)

PascalCase = samtliga ord inleds med stor bokstav (används för det mesta vid namngivning av klasser, metoder, properties och generellt allt som har publik åtkomst.)

camelCase = första ordet inleds med liten bokstav, samtliga efterföljande ord inleds med stor bokstav. (används mestadels vid namngivning av parametrar i en metod, och om jag inte minns fel även anonyma variabler i metoder)

lycka till på provet!

Permalänk
Avstängd

Jag tycker det är bra att du använder svenska då är det bara svenska som kan veta hur du har kodat det.

Visa signatur

Server: två Intel Xeon E5-2690v2 och 128 GB ram

Min server dator: #15149189 http://i.imgur.com/BKxOmUP.jpg
zxhosting: https://www.facebook.com/pages/Zxhosting/1476037889350815