NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
jt.e
Člen
Avatar
jt.e:21.2.2016 12:14

Zdravím vás.
Chci se zeptat, jestli je například toto nutné:

if(listbox.Items.Count>0)listbox.Items.Clear();

nebo stačí:

listbox.Items.Clear();

(toto je pouze jeden příklad, takovýchto metod je celá řada. Vždycky si říkám mám tam dát to "ověření", nebo je to zbytečné?)
Jak a jestli předem poznám, jestli je nutné provádět tyto kontroly u výchozích komponent a funkcí u Visual Studia? A jak správně psát vlastní kód - tak že budu muset používat kontrolu jako je v prvním případě, nebo tak, že tuto kontrolu budu dávat do metody Clear()?

Editováno 21.2.2016 12:15
 
Odpovědět
21.2.2016 12:14
Avatar
Odpovídá na jt.e
Michal Štěpánek:21.2.2016 12:25

Pokud má být vždycky výsledkem vyprázdnění listboxu, pak je ta kontrola zbytečná

Nahoru Odpovědět
21.2.2016 12:25
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na jt.e
Jan Vargovský:21.2.2016 14:37

Ověření dávej tam, kde to má smysl. V tomto případě to smysl nemá. Btw, u kolekcí (obzvláště pokud máš na ně referenci jako IEnumerable) stačí zavolat extension metodu Any() místo Count, který ti vždycky projde celou kolekci (hlavně v případu toho IEnumerable, jestli to je nějaký list, tak ten si drží velikost interně jako proměnnou).

 
Nahoru Odpovědět
21.2.2016 14:37
Avatar
jt.e
Člen
Avatar
jt.e:21.2.2016 18:00

Díky, rozumím.
A ještě tento příklad pro ověření přístupu k IDisposable objektu:

if (obj != null && !obj.IsDisposed)obj. .. //? pro null je mi jasný

je to tak správně?

Editováno 21.2.2016 18:01
 
Nahoru Odpovědět
21.2.2016 18:00
Avatar
Lako
Člen
Avatar
Odpovídá na jt.e
Lako:21.2.2016 19:16

Co se týče zbytečného ověřování, tak se mi často stávalo, že jsem při ověřování null musel psát:

if(NějakáInstanceObjektu != null)
NějakáInstanceObjektu.VolejNějakouMetodu();

C# 6 tohle vyřešil:

NějakáInstanceObjektu?.VolejNějakouMetodu();

(nezavolá se metoda, pokud je to null)
Paráda

 
Nahoru Odpovědět
21.2.2016 19:16
Avatar
Odpovídá na Jan Vargovský
Marian Benčat:26.2.2016 0:18

Jen pro přesnost ...Any() (bez predikatu) si jen řekne o enumerátor a pak jen vraci vysledek operace enumerator.Get­Next(); (který vrátí false pokud se není schopný přesunout dál) a dělá to u všech kolekcí stejně.

Nahoru Odpovědět
26.2.2016 0:18
Totalitní admini..
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.