Podmienka závislá na type   zodpovězená otázka

VB.NET

Chcel by som sa spýtať, aký je najčistejší spôsob

testovania, či je nejaká premenná určitého typu?

Konkrétne potrebujem zistiť, či prvok z System.Collections.ArrayList

je typu Integer alebo typu string. Obsahuje totiž buď e-mailovu adresu alebo kód užívateľa.

Ďakujem.

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

Nejlépe to dělám pomocí TypeName, viz následující kód:

        Dim myArrayList As System.Collections.ArrayList = New System.Collections.ArrayList
        myArrayList.Add(2)
        myArrayList.Add("text")
        myArrayList.Add(1.5)
        For i As Integer = 0 To myArrayList.Count - 1
            Debug.Print(TypeName(myArrayList(i)))
        Next

;-)

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

Vámi uvedený kód ale nezjistí jestli je prvek odpovídajícího typu. Kód pro zjištění typu prvku je následující:

For index As Integer = 0 To myArrayList.Count - 1
  If TypeOf(myArrayList(index)) Is Integer Then
    'Prvek je typu Integer
  ElseIf TypeOf(myArrayList(index)) Is String Then
    'Prvek je typu String
  End If
Next

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

To je pekný spôsob. Ďakujem.

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

Bohužiál som zistil, že tento postup nefunguje a síce všetky prvky myArrayList(i) sú typované ako string. Otázka teda znie, ako rozoznám, že reťazec je číselná hodnota alebo reťazec e-mailovej adresy. Zatial to riešim tak ze cez InStr hľadám symbol @ ak nájdem tak reťazec je emailová adresa ak nie je to kód.

Napadá vás nejaké čistejšie riešenie?

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

Čísla do ArrayListu vkládejte v jejich nativním typu (Integer, Byte...) a ne jako String, potom to bude fungovat. Položky v ArrayListu jsou typu Object takže to není problém.

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

Můžete zkusit pomocí funkce Integer.TryParse zjistit, jestli se dá číslo převést na Integer. Pokud ano, je to číslo, ale uložil jste jej do ArrayListu jako String.

A jinak doporučuji vyvarovat se použití funkce InStr, je to přežitek ze starého VB. Daleko lepší a rychlejší je funkce proměnná.IndexOf.

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

Hodnoty sa ťahjú z db a premelú sa cez niekoľko metód, kde strácajú svoj typ a výsledkom je arraylist plný stringov. Až na tejto úrovni potrebujem hodnoty typovo odlíšiť. Skúsim použiť TryParse. Vypadá, že je to presne to, čo som potreboval. Ďakujem.

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