Boolean? inverze   zodpovězená otázka

VB.NET

Dobrý den,

měl bych dotaz, nainstaloval jsem si zkušebně ReSharper a pokud mám v kódu:

dim bBool as boolean? = true

bBool = not bBool

tak u negování proměnné se mi podtrhne celé přiřazení s popisem že nemohu použít Not u proměnné System.nullable(of boolean).

Potřeboval bych vědět, jak se udělá negace správně ?

(Jde o hodnotu ToggleButtonu.IsChecked u WPF)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Problém je v tom, že se pokoušíte přířadit hodnotu true/false do hodnoty, který obsahuje i null, řešením je dát proměnné alternativu, pokud obsahuje null.

Vypadá to takto:

dim bBool as boolean? = true

bBool = not bBool ?? true;

Toto způsobí, že pokud je proměnná null, automaticky se z ní stane true...

PS: Nevím jestli je to úplně správně, ve VB.NET nedělám... Ale mělo by...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Už zase :-) Ach ten C#, omlouvám se, za ten středník, ten tam samozřejmě nemá být :-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak tenhle zápis VB nedá.

Neví někdo jak to zapsat:

bBool = not bBool ?? true;

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Já bych to napsal takhle:

bBool = If(bBool.HasValue, Not bBool.Value, True)

Asi by to šlo i kratším způsobem, ale tohle mi přijde srozumitelnější.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Děkuji za odpověď

ReSharper to ještě upravil z:

bBool = If(bBool.HasValue, Not bBool.Value, True)

na

bBool = Not bBool.IsChecked.HasValue OrElse Not bBool.IsChecked.Value

ale Vaše řešení je jak jste psal srozumitelnější.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback