08. juli 2003 - 16:33Der er
4 kommentarer og 1 løsning
Exception of type System.StackOverflowException was thrown.
Hej!
Jeg har lavet en class hvori jeg vil sætte en DateTime property.
Men så snart jeg sætter denne for jeg følgende exception:
Exception of type System.StackOverflowException was thrown.
Jeg har søgt en del steder for at finde ud af hvorfor denne exception opstår, men har kun fundet sites der siger at det er pga. et uendeligt loop. Jeg har imidlertidigt ingen loops på siden og alle andre properties kan sættes uden problemer.
Det er fuldstændig korrekt, at du må ha' en eller anden form for loop... Det kunne tænkes, at du gør noget i stil med:
private DateTime oprettet;
public DateTime Oprettet { get { return oprettet; } set { Oprettet = value; } }
Ovenstående vil give en StackOverflowException, da jeg har lavet en lille fejl! I min "set" sætter jeg Oprettet lig en værdi, men Oprettet er jo min property, og dermed opstår der et uendeligt loop...
Du må ha' en tilsvarende fejl - evt af en property der kalder en property som kalder en property som kalder... osv...
Hvis du kommmer med noget kode, skulle vi hurtigt kunne få løst det problem :-)
public class DataHolder { private DateTime m_DateStart; private DateTime m_DateEnd;
public DataHolder() { m_DateStart = DateTime.Now; m_DateEnd = DateTime.Now; }
public DateTime DateStart { get { return m_DateStart; } set { m_DateStart = value; } }
public DateTime DateEnd { get { return m_DateEnd; } set { m_DateEnd = value; } } }
Ligesom du returnerer værdierne fra m_DateStart og m_DateEnd er det også de to værdier der skal sættes i dine "set". Når du et sted i din kode skriver dh.DateStart = DateTime.Now vil der blive udført følgende af din kode:
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.