Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [c#] Hashtable

  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080

    [c#] Hashtable

    Vorrei prendere confidenza con gli Hashtable:
    1- come si crea un hashtable?
    2- come aggiungo dati?
    3- come recupero i dati?
    4- posso modificare una riga? e se si come?
    5- posso eliminarlo?

    Qualsiasi cosa a riguardo mi interessa.

    Sonia

  2. #2
    Gli HashTable ci permettono di salvare in memoria una lista coppie formate da chiave-valore ad esempio: "Rossi" - "Mario"; possiamo puntare direttamente al valore interessato attraverso la chiave.

    La classe è inserita nel namespace System.Collections, che ha all’interno diverse classi e interfacce che raccolgono implementazioni per le liste e le collections, in un precedente articolo abbiamo già visto l'uso di questo namespace attraverso la classe System.ArrayList.

    Per inserire una nuova coppia basta utilizzare il metodo Add:

    C#
    Listato n°1

    HashTable lista = new HastTable();
    lista.Add[“Rossi”,”Mario”];



    VB.NET
    Listato n°2

    Dim Lista as New HastTable()
    Lista.Add(“Rossi”,”Mario”)



    La chiave è una stringa è non può essere null, mentre il secondo parametro è un’object e può essere anche null.
    Essendo il secondo parametro un’object possiamo inserire come valore qualunque cosa, quindi in questo modo la nostra lista diventa molto dinamica e flessibile dandoci la possibilità di inserire oggetti eterogenei.

    Per recuperare il valore basta puntare con la chiave e castare l’oggetto in modo adeguato

    C#
    Listato n°3

    string nome = (string)lista[“Rossi”];



    VB.NET
    Listato n°4

    Dim nome as String = Ctype(list(“Rossi”),string)



    Se invece non conosciamo la chiave possiamo ciclare tra le coppie, per fare questo dobbiamo utilizzare la classe DictionaryEntry, che rappresenta la coppia chiave-valore

    C#
    Listato n°5

    for each(DictionaryEntry entry in lista)
    {
    String chiave = entry.key;
    String valore = (string)entry.value;
    }



    VB.NET
    Listato n°6

    Dim entry as DictionaryEntry.

    For each entry in lista
    Dim chiave as string = entry.key
    Dim valore as string = Ctype(entry.value,string)
    Next

  3. #3
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie per la mini guida

  4. #4
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Ho fatto una prova...

    Ho importato: using System.Collections;

    Al clic di un bottone faccio questo:

    codice:
    private void Button1_Click(object sender, System.EventArgs e)
    {
    HashTable lista = new HastTable(); 
    lista.Add["Rossi","Mario"]; 
    }
    ma mi vengono restituiti questi errori:
    1- c:\inetpub\wwwroot\hanstbl\WebForm1.aspx.cs(52): Only assignment, call, increment, decrement, and new object expressions can be used as a statement
    2- c:\inetpub\wwwroot\hanstbl\WebForm1.aspx.cs(51): The type or namespace name 'HashTable' could not be found (are you missing a using directive or an assembly reference?)
    3- c:\inetpub\wwwroot\hanstbl\WebForm1.aspx.cs(52): The type or namespace name 'lista' could not be found (are you missing a using directive or an assembly reference?)

    Come posso definire DOVE salvare gli hanstbl? posso scegliere io il nome?

  5. #5
    prova a mettere anche

    using System.Collections.Specialized;

  6. #6
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    stessi errori.
    Ma dove me li salva?

  7. #7
    Occhio al case sensitive.
    La classe è Hashtable e non HashTable con la T maiuscola

  8. #8
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Infatti un errore è risolto tnx

    adesso mi dice:
    1- (su add): c:\inetpub\wwwroot\hanstbl\WebForm1.aspx.cs(54): Method 'System.Collections.Hashtable.Add(object, object)' referenced without parentheses

    2- c:\inetpub\wwwroot\hanstbl\WebForm1.aspx.cs(54): Only assignment, call, increment, decrement, and new object expressions can be used as a statement


    Ma non devo dire dove salvarlo? non devo dargli un nome? io ho scritto solo quelle 2 righe di codice

  9. #9
    Altro errore che ho visto adesso.
    Il metodo Add non si chiama con le parentesi quadre ma con le rotonde.

    Cioè Lista.Add("Rossi","Mario") e non Lista.Add["Rossi","Mario"]

  10. #10
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Sembra che funzioni grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.