Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zasto mi sledeci code prijavljuje gresku

[es] :: .NET :: Zasto mi sledeci code prijavljuje gresku

[ Pregleda: 2046 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Valerij Zajcev

Član broj: 40886
Poruke: 1374
*.dynamic.sbb.rs.



+2 Profil

icon Zasto mi sledeci code prijavljuje gresku27.06.2010. u 13:27 - pre 168 meseci
Primer je bezveze ali posenta je da imam dve business entity klase, i sada klasa user ima instancu Class-a i klasa Class ima instancu User-a. Da li ovo ovako moze da se radi ili sam se zajj*** u racunu :). Problem nastaje kada napravim novu instancu User-a izbaci mi
Citat:

Cannot evaluate expression because the current thread is in a stack overflow state.

Code:

public class User
{
    public int UserId;
    public string FirstName;
    ...
    public Class class;

    public User
    {
         class = new Class();
    }
}

Code:

public class Class
{
     public int ClassId;
     public dateTime date;
     public User user = null;

     public Class()
     {
              user = new User
     }
}
 
Odgovor na temu

the_tosic

Član broj: 37314
Poruke: 381
*.dynamic.isp.telekom.rs.



+128 Profil

icon Re: Zasto mi sledeci code prijavljuje gresku27.06.2010. u 13:37 - pre 168 meseci
Mislim da si pogresio, naizmenicno se pozivaju konstruktori User i Class i to izaziva stack overflow (posto se na steku kreiraju).

Mozda bi trebalo ovako da uradis:

Code:
 public class User
{
    public int UserId;
    public string FirstName;
    ...
    public Class class;

    public User(Class s)
    {
         class = s;
    }


Code:
 public class Class
{
     public int ClassId;
     public dateTime date;
     public User user = null;

     public Class()
     {
              user = new User(this);
     }


EDIT: odnosno mislim da c# ne kreira objekte na stack-u nego na heap-u, ali pozivi konstruktora preplave stack.

[Ovu poruku je menjao the_tosic dana 27.06.2010. u 15:00 GMT+1]
 
Odgovor na temu

lonelyrider_44
Zrenjanin

Član broj: 42310
Poruke: 445
*.com
Via: [es] mailing liste



+20 Profil

icon Re: Zasto mi sledeci code prijavljuje gresku27.06.2010. u 13:38 - pre 168 meseci
New user povlaci za sobom new class, new class povlaci za sobom new user,
new user povlaci za sobom new class.... U principu instanciranjem objekta
tipa user, ili class, zapochinje se beskonachna petlja, neka vrsta
rekurzije rekao bih.

--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
 
Odgovor na temu

[es] :: .NET :: Zasto mi sledeci code prijavljuje gresku

[ Pregleda: 2046 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.