Ensimmäiseksi kun olen lähinnä näiden eng kielisten sivustojen varassa, niin pari asiaa on jääny askarruttaa.
Ensimmäinnen on tämä muistin varaaminen ja niiden poistaminen.
Mitkä objektit lähtee automaattisesti ja mitkä pitää tehdä manuaalisesti?
Mulla on nappuloita jotka on tehty new operaattorilla, mihin sitten dynaamisesti liitän kuvia. Mutta missään en poista näitä kuvia? PItäiskö ja missä?
SItten mulla on oma luokka, mikä pitää eräänlaista animaatiota yllä, eli valitun nappulan vieressä sykkii mun Image objekti, tämäkin on tietenkin tehty new:llä, mutta sitäkään en poista. Luokissa ei ole deconstructorii kuten C :ssa.
Ja mitä tapahtuu jos teen aina vaan Image img = Image.FromFile(...);
ja vaikka pictureBox1.Image = img; Eli syökö toi aina vaan lisää muistia?
Pitäiskö tehdä se niin, että
if(pictureBox1.Image != null) pictureBox1.Image.Dispose();
ja sitten vasta laittaa uus image?
Entäs muut Formissa olevat omat new operaattorilla varatut asiat?
Pitäiskö ne ottaa kiinni siinä Form.Close viestissä ja poistaa kaikki varaukset?
Toi on vähä sekavaa, kun osan poistaa itse ja osan se tekee automaattisesti.
-------------------
Toinen on samaan imageen liittyvä asia.
Miten toi Grapich.DrawImage(Image, Point[]));
Oikein toimii? En saa sitä toimimaan halutulla tavalla sitten mitenkään.
Eli mulla on Image otettu tiedostosta, mitä timerin avulla yritän saada rullaamaan kaksi kertaa sekunnissa ja image liikkuu pysty suunnassa 3 pikselii kerrallaan alaspäin ja loput siitä menee ylös niin, että siitä saa sellasen jatkumon. Timer toimii, mutta Image ei rullaa. C :lla saisin ton toimimaan heti.
Olisin erittäin kiitollinen jos joku viittis laittaa vähä esimerkin tosta.
Kiitos,
C# aloittelija
Pari basic kysymystä
2
1038
Vastaukset
C#:ssa kaikki muistin tyhjentäminen on automaattista. Siis jos puhutaan muistista. Se miten ohjelmasi tallentelee juttuja on toinen juttu. Mutta kun varaat muistia, niin kun et tarvitse enää tietoa, niin kielen järjestelmät tyhjentävät muistin.
Muu kysymyksen osio oli jo niin sekavaa, että en pohdi sen sisältöä. Luulisin että teet jonkun asian tuossa väärin, sillä kokemukseni mukaan tuon minkä mainitset tekeminen c on paljon hankalampaa kuin c#:lla. Koska alussa yleensäkin mietit tuota muistin tyhjennystä, kertoo että et ole kovin kokenut c# ohjelmoija - saati kokenut ohjelmoija. Joten paneudu rajapinnan toimintaa c# kautta, älä sotke mukaan c monimutkaisia rakenteita. c# ja c ovat ihan täysin eri asia, vaikka syntaksi vähän on saman tapaista.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 853541
Kalasataman talossa lienee rakennusvirhe
Ei pitäisi olla mahdollista parvekkeen kautta tulipalon kiivetä katolle saakka kuin korkeintaan ylimmästä kerroksesta.1871403- 771387
Kristillinen Kaste on syntisten kaste, ei itsensä uskoviksi julistaneiden kaste
Raamatun mukaan vain syntisyyden vuoksi kastetut saavat kasteen hyödyn, syntien anteeksisaamisen ja Pyhän Hengen lahjan2401070Kaipaatko nainen
Semmoista tosi hankalaa ja arkaa miestä? Pitäisitkö hänet aina omanasi jos saisit hänet? Miten huomioisit hänen herkkyyd1051010Venäjä teki mahtavan iskun Kiovaan?
Miksi Ukraina ei kykene tekemään Moskovaan yhtä mahtavia iskuja.310962- 45887
- 95867
Milloin ymmärsit
Milloin tunnistit, että sinulle kirjoitetaan ja kuka kirjoittaa? Tarkka päivämäärä ja kellonaika 😉 Önnönnöö, jos ei os78855Nojatuoli !
Uutta kehiin, kun edellinen pikavauhtia täyttyi, pitäisikö kiittää näitä asian jouduttaneita? Pilvet leijaa, sadetta en124835