Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Variabler i objekt nollställs?

Postades av 2005-10-24 10:34:44 - Johan Jonsson, i forum c# (c-sharp), Tråden har 15 Kommentarer och lästs av 535 personer

Hej!

Jag har en klass A som gör ett objekt av klassen B.

Från A anropar jag en metod i B som fyller en global lista med saker, jag skriver denna lista till en fil så jag vet med säkerhet att så är fallet. Jag gör några saker i a för att senare försöka använda en annan metod i objektet B som använder denna lista, men då är den sop-ren. 0 i längd, inget element, trots att jag inte bett om någon sådan rensning.
Är det bara jag som råkat ut för detta?

Jag har hållit på i Java en del också så jag tror inte syntaxen är galen


Svara

Sv: Variabler i objekt nollställs?

Postades av 2005-10-24 11:16:35 - Martin Adrian

En gissing:

Du fyller på listan i ett temporärt object av klassen B.


Svara

Sv:Variabler i objekt nollställs?

Postades av 2005-10-24 12:44:42 - Johan Jonsson

[Edit] b är global i a och initieras i konstruktorn i a[/edit]

Det är en lista med boolska värden, true eller false, dessa kan ju inte försvinna? Däremot om jag gör min lista statisk är problemet löst men jag förstår inte varför det ska behövas.


Svara

Sv: Variabler i objekt nollställs?

Postades av 2005-10-24 14:53:52 - Göran Andersson

Det finns inga globala variabler i C#. Vad menar du när du säger att listan är global? Var och hur har du deklarerat den?


Svara

Sv:Variabler i objekt nollställs?

Postades av 2005-10-24 15:11:02 - Johan Jonsson

Här kommer koden nedan, i förenklad version eftersom att jag inte har kod och internet på samma dator.

[edit] Ändrat b.doList() till temp.doList() samt b.readList() till temp.readList()[/edit]
public class A
{
        b temp = new b();
        temp.doList();//Gör listan
        temp.readList();//Finns inte kvar
}
public class B
{
        private Boolean[] boolList;
        public void doList()
        {
                boolList = new Boolean[2];
                boolList[0]=true;
                boolList[1]=true;
                //Fyll listan
        }
        public Boolean readList()
        {
                return boolList[0]; //Finns inte, det är en NULL-pekare
        }
}


Svara

Sv: Variabler i objekt nollställs?

Postades av 2005-10-24 19:59:38 - Oskar Johansson

Den kod du visar nu är felfri, något annat måste vara fel


Svara

Sv:Variabler i objekt nollställs?

Postades av 2005-10-25 08:24:52 - Johan Jonsson

Jag tycker också den är felfri, dock måste jag sätta boolList till att vara static för att det ska fungera, iofs är problemet löst men jag fattar inte varför det ska behövas.
[edit] Den enda skillnaden mellan denna och min kod är att det gör lite saker emellan doList() och readList()[/edit]


Svara

Sv: Variabler i objekt nollställs?

Postades av 2005-10-25 08:25:19 - Martin Adrian

public class A
{
        b temp = new b();
        b.doList();//Gör listan
        b.readList();//Finns inte kvar
}

Ser skumt ut tycker jag.

Borde det inte vara
temp.doList();
temp.readList();

Är inte så jättebra på C# men

b.doList() borde väl innebära antingen att en statisk funktion anropas eller också skapas ett temporärt b objekt och medlemmen i det anropas.


Svara

Sv:Variabler i objekt nollställs?

Postades av 2005-10-25 08:28:27 - Johan Jonsson

Det är rätt, jag har skrivit fel, det är temp.doList() som anropas i min kod och inget annat, men som sagt så kan tryckfelsnisse vara framme då man ska skriva och inte kan kopiera koden....


Svara

Sv: Variabler i objekt nollställs?

Postades av 2005-10-25 10:28:28 - Martin Adrian

>dock måste jag sätta boolList till att vara static för att det ska fungera

På vilket sätt fungerar det? Kan ju knappast vara särskilt användbart.

Att det "fungerar" med static innebär ju att det är ett livstidsproblem du har. Objektet där du fyller på listan går "out of scope" någonstans. Att göra boolList static lär ju bara innebära att problemet dyker upp någon annanstans.

Varför har du överhuvudtaget klassen b?


Svara

Sv:Variabler i objekt nollställs?

Postades av 2005-10-25 11:26:12 - Johan Jonsson

Klart att det inte är speciellt bra att sätta static om man inte behöver det och det är anledningen att jag frågar här, men hur i hela friden kan något bli out of scope om det deklareras i början av en klass och sedan initieras i en metod. Jag hade kunnat förstå om jag hade deklarerat något lokalt i en metod men så är verkligen inte fallet. Vad som finns i klassen b är lite för långt för att stoppa in här, det som går fel står i tråden.
Jag ville mest bara konfirmera att inte det är något olika i c# motför typ java. Antar att jag får kolla igenom koden igen.


Svara

Sv:Variabler i objekt nollställs?

Postades av 2005-10-26 10:09:24 - Emma Magnusson

För att göra exakt så du har skrivit:

b temp = new b();
b.doList();
...

Krävs det att både doList och readList är static. Om du anropar dem som metoder på objektet b ska de inte behöva vara det. Så kolla igenom koden igen, precis som du själv säger.

/Emma


Svara

Sv: Variabler i objekt nollställs?

Postades av 2005-10-26 11:33:22 - Johan Jonsson

Nu var det iofs inte det som var felet, om du läser ovan ser du att jag erkännt mitt misstag, jag hade skrivit av koden fel. I min riktiga kod har jag temp.doList().


Svara

Sv:Variabler i objekt nollställs?

Postades av 2005-11-01 23:10:58 - Tiberiu Covaci

Är detta felfri????
public class A
{
b temp = new b();
temp.doList();//Gör listan
temp.readList();//Finns inte kvar
}


Har nån kopilerat och kört det här? Jag är lite tveksam...

/Tibi


Svara

Sv: Variabler i objekt nollställs?

Postades av 2005-11-02 07:50:32 - staffan sjöstedt

Nej den är inte felfri. Vias direkt i en kompilator.

Följande kod funkar. Jag hoppas det löser det inledande problemet.
Notera att klassen heter B o inte b. Alltså måte man skriva "new B()"
Vidare behövs en constructor för A.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class A
    {
        public A()
        {
            B temp = new B();
            temp.doList();//Gör listan
            bool result= temp.readList();//Finns
            Console.WriteLine( result );
        }
    }
    public class B
    {
        private Boolean[] boolList;
        public void doList()
        {
            boolList = new Boolean[2];
            boolList[0]=true;
            boolList[1]=true;
            //Fyll listan
        }
        public Boolean readList()
        {
            return boolList[0]; //Finns !
        }
    }


Svara

Sv:Variabler i objekt nollställs?

Postades av 2005-11-02 08:58:03 - Patrik Löwendahl

eh,

din instans av b försvinner ju. Det är självklart att den inte finns på andra ställen då?

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class A
    {
                B myB;
        public A()
        {
            myB = new B();
            myB.doList();//Gör listan
            bool result= myB.readList();//Finns
            Console.WriteLine( result );
        }
    }
    public class B
    {
        private Boolean[] boolList;
        public void doList()
        {
            boolList = new Boolean[2];
            boolList[0]=true;
            boolList[1]=true;
            //Fyll listan
        }
        public Boolean readList()
        {
            return boolList[0]; //Finns !
        }
    }


Nu kommer din boollista att finnas kvar i ditt object myB.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 620
27 953
271 709
715
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies
Expand
next previous
Close

Previous

0/0

Next