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
1009
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
Kelekkakisat
Mikä vakava onnettomuus sattunut kisoissa. On peruttu koko kisat. Pelastuskopteri näytti käyvän paikalla.146533- 913112
- 893037
- 192909
- 482899
- 462414
- 262398
Pitäis vaan lopettaa
Sinun kanssa yhteydenpito. Alkaa vaan haluamaan enemmän ja tuskin lopulta mikään kohtaisi. Ja ikävä vaan kasvaa ja lähei132190Ikävä uutinen uudesta Unelmia Italiassa -kaudesta
Unelmia Italiassa -sarja on ollut supersuosittu ja uutta kautta on odotettu. Nyt on tullut se aika, että TV-katsojat pää71963Salatut elämät: Lola Odusoga -paljastus - Tämä suosii tiettyjä Salkkarit-faneja!
Salatut elämät vetää katsojia tv-ruudun äärelle jaksosta, kaudesta ja vuodesta toiseen. Tähän mennessä sarjaa on nähty j81911