Avatar billede jonas_h Nybegynder
16. maj 2008 - 20:30 Der er 10 kommentarer og
1 løsning

Using med custom objekt

Jeg har en klasse "Database" som selv opretter en connection osv. Men i øjeblikket opretter jeg, udfører kommandoer og derefter lukker jeg den med en Close() metode som blot kalder Close() på connectionen...

Kan jeg bruge:
using(Database db = new Database())
{
bla bla
}

og få den samme effekt? Hvilken metode bruger using når den skal lukke?
Avatar billede arne_v Ekspert
16. maj 2008 - 20:37 #1
For at bruge using skal den klasse implementere IDisposable og det er saa
Dispose metoden der bliver kaldt.
Avatar billede arne_v Ekspert
16. maj 2008 - 20:42 #2
Alternativt kan du jo ogsaa bare kalde close i en finally block manuelt.
Avatar billede jonas_h Nybegynder
16. maj 2008 - 20:43 #3
Hører finally ikke kun til try/catch?
Avatar billede jonas_h Nybegynder
16. maj 2008 - 20:45 #4
Og lige hurtigt.. Bør min Dispose() metode i Database så kalde Connection.Close() eller Connection.Dispose()?
Avatar billede arne_v Ekspert
16. maj 2008 - 20:58 #5
Jo.

Database db;
try
{
  db = new Database();
  ...
}
finally
{
  if(db != null) db.Close();
}
Avatar billede arne_v Ekspert
16. maj 2008 - 20:58 #6
Lige meget.
Avatar billede jonas_h Nybegynder
16. maj 2008 - 21:00 #7
Okay:)

Lige et sidste spørgsmål ang. using, så får du dine point.. Hvis man f.eks. skriver
using(Database db=new Database())
{
//udregninger
return result;
}
vil den så sørge for at lukke korrekt selvom man har returneret inden klammeparantesen?
Avatar billede arne_v Ekspert
16. maj 2008 - 21:14 #8
Ja.

Finally koeres ogsaa hvis man laver en return oppe i try blokken.

Og et svar.
Avatar billede jonas_h Nybegynder
16. maj 2008 - 21:19 #9
Du skal have mange tak :)
Avatar billede jonas_h Nybegynder
16. maj 2008 - 21:26 #10
Nu har du fået svaret, men håber lige ud har lyst ti lat svare på sidste spørgsmål.

Er det muligt at lave en nested using i én kommando? Altås i stedet for
using(database...)
  using(another obj)...

Så noget i stil med using(Database... ; Another obj) {...}
Avatar billede arne_v Ekspert
16. maj 2008 - 21:40 #11
Ja.

Brug komma imellem dem.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester