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
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
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 allinterno 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 è unobject e può essere anche null.
Essendo il secondo parametro unobject 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 loggetto 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
Ho fatto una prova...
Ho importato: using System.Collections;
Al clic di un bottone faccio questo:
ma mi vengono restituiti questi errori:codice:private void Button1_Click(object sender, System.EventArgs e) { HashTable lista = new HastTable(); lista.Add["Rossi","Mario"]; }
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?
prova a mettere anche
using System.Collections.Specialized;
Occhio al case sensitive.
La classe è Hashtable e non HashTable con la T maiuscola
Infatti un errore è risoltotnx
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
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"]