login  Naam:   Wachtwoord: 
Registreer je!
 Forum

C# Return in if en using (Opgelost)

Offline Ultimatum - 03/07/2010 12:07 (laatste wijziging 03/07/2010 12:17)
Avatar van UltimatumPHP expert Ik ben me weer aan het verdiepen in C# en zie regelmatig dit:
  1. if (cc == null) return;
  2. [rest van de code hier]

Dit is toch hetzelfde als dit of niet?
  1. if(cc != null) {
  2. [rest van de code hier]


Waarom die return? Is dat echt nodig of kan ik ook gewoon zoals in 2de stuk code doen want hij komt niet in de if.

En had nog een vraag over using. Dit zie ik nu ook regelmatig, wat is het voordeel?
  1. using (Pen aPen = new Pen(Color.FromArgb(128, 240, 154, 30)))
  2. {
  3. e.Graphics.DrawLine(aPen, rect.Left, topPart.Bottom - 1, rect.Right, topPart.Bottom - 1);
  4. }

Tegenover dit:
  1. Pen aPen = new Pen(Color.FromArgb(128, 240, 154, 30))
  2. e.Graphics.DrawLine(aPen, rect.Left, topPart.Bottom - 1, rect.Right, topPart.Bottom - 1);

5 antwoorden

Gesponsorde links
Offline Abbas - 03/07/2010 12:40 (laatste wijziging 03/07/2010 12:41)
Avatar van Abbas Gouden medaille

Crew .NET
Als je het statement "cc == null" gebruikt en die zal nooit "geraakt" worden, dan kan je dat weglaten in mijn ogen. Dit heeft geen zin:

  1. Object o; //is bvb nooit null
  2. if(o == null)
  3. {
  4. }
  5. else
  6. {
  7. //doe iets met 'o'
  8. }

Maar dit kan enkel als je zeker weet dat 'o' nooit null zal zijn.

Die using is voor resource management. Het statement zorgt ervoor dat op het einde alle resources weer vrijgegeven worden door de Dispose-methode voor het object/de variabele. Het zorgt niet voor de afhandeling van Exceptions. Daar zal je nog steeds best een try-catch voor gebruiken.

  1. using (SqlConnection myConn = new SqlConnection(uwConnectionString))
  2. using (SqlCommand myComm = new SqlCommand("SELECT... ", myConn))
  3. {
  4. cn.Open();
  5. cm.ExecuteNonQuery();
  6. }
  7.  
  8. //is hetzelfde als
  9.  
  10. SqlConnection myConn = new SqlConnection(uwConnectionString);
  11. SqlCommand myComm = new SqlCommand("SELECT ...", myConn);
  12.  
  13. try
  14. {
  15. myConn.Open();
  16. myComm.ExecuteNonQuery();
  17. }
  18. catch(Connection ex)
  19. {
  20. //weergeven van ex.Message
  21. }
  22. finally
  23. {
  24. if (myComm != null);
  25. myComm.Dispose();
  26. if (myConn != null)
  27. myConn.Dispose();
  28. }

Snap je? 
Offline Ultimatum - 03/07/2010 12:59
Avatar van Ultimatum PHP expert cc kan soms null zijn dus daarom is die return denk ik, maar kan dat ook gewoon met de if opgelost worden zoals 2de stukje dan?
En als ik dus veel moet painten is het beter om using te gebruiken? Want dacht dat de GC gewoon alles achter mijn reet opruimde .
Offline Abbas - 03/07/2010 13:31
Avatar van Abbas Gouden medaille

Crew .NET
De GC doet niet alles voor je!  Hier is een goed artikel over de Garbage Collector. Voor die cc kan je dan best doen:

  1. if(cc == null)
  2. {
  3. //foutmelding of cc 'vullen' dat het niet null is
  4. }
  5. else
  6. {
  7. //doe iets met cc
  8. }
Bedankt door: Ultimatum
Offline WebDevHobo - 03/07/2010 17:02 (laatste wijziging 03/07/2010 17:04)
Avatar van WebDevHobo Lid Die cc == null kan inderdaad met een andere if-statement, maar doe daar alsjeblief toch niet zo bekakt over.

Statements als "Het kan toch anders geschreven worden?" is een bron van constante frustratie in het programmeren.

Persoon A wil het zo zien en persoon B weer anders. En dan krijg je zo discussie's waar in beiden proberen hun gelijk te halen...

Eigenlijk is dat geen vraag van "het kan toch anders?" maar eerder "Dit is niet hoe ik het doe, waarom doe je het niet zoals ik?"

Maar dan mooi afgedekt met een onschuldig lijkend vraagje.


Wat usings betreft, dat kan je gebruiken voor alle klassen die ooit ergens overerven van de interface IDisposable.

het using() keywoord wordt door de compiler dan later vervangen door try/catch/finally, met een close methode die automatisch wordt aangeroepen. Vandaar "resource management"
Offline Ultimatum - 03/07/2010 18:05
Avatar van Ultimatum PHP expert
WebDevHobo schreef:
Die cc == null kan inderdaad met een andere if-statement, maar doe daar alsjeblief toch niet zo bekakt over.


Wat bedoel je hier nou precies mee? Ik wilde graag weten of dit ook anders gedaan kon worden omdat ik het regelmatig tegen kom.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.237s