Szkolenie
Moduł
Praca z tablicami i tabelami skrótów w skryptach programu Windows PowerShell - Training
W tym module wyjaśniono, jak używać tablic i tabel skrótów w skryptach programu Windows PowerShell.
Ta przeglądarka nie jest już obsługiwana.
Przejdź na przeglądarkę Microsoft Edge, aby korzystać z najnowszych funkcji, aktualizacji zabezpieczeń i pomocy technicznej.
W tym artykule przedstawiono sposób używania HashTable
kolekcji w języku Visual C#.
Oryginalna wersja produktu: Visual C#
Oryginalny numer KB: 309357
Ponieważ funkcja tworzenia skrótów eliminuje konieczność kosztownego wyszukiwania danych w celu pobrania danych, można użyć skrótu w celu wydajnego pobierania danych. Funkcja skrótu używa wartości samego klucza do lokalizowania danych.
Biblioteki klas bazowych oferują klasę zdefiniowaną HashTable
w System.Collections
przestrzeni nazw, aby nie trzeba było kodować własnych tabel skrótów.
Kolekcja HashTable
przechowuje parę (Key
, Value
) i używa wartości do utworzenia skrótu Key
i uzyskania lokalizacji przechowywania. Element Key
jest niezmienny i nie może mieć zduplikowanych wpisów w pliku HashTable
. W tym przykładzie użyto kilku wystąpień prostej Person
klasy do przechowywania w obiekcie HashTable
. Nazwisko jest używane jako Key
.
Otwórz program Microsoft Visual Studio i utwórz projekt aplikacji Windows Forms w programie Visual C#. Formularz1 jest domyślnie dodawany do projektu.
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy nazwę projektu, wskaż polecenie Dodaj, a następnie wybierz pozycję Klasa, aby dodać moduł klasy. Class1
jest domyślnie dodawany do projektu.
Zastąp dowolny kod w Class1
module następującym kodem:
public class Person
{
public string Fname, Lname;d
public Person (string FirstName, string LastName)
{
Fname = FirstName;
Lname = LastName;
}
public override string ToString ()
{
return Fname + " " + Lname;
}
}
Klasa Person
ma jeden konstruktor, który przyjmuje FirstName
parametry i LastName
i przypisuje te parametry do zmiennych lokalnych. Funkcja ToString
zastępuje klasęObject
, aby zwracać Fname
i Lname
łączyć ze sobą.ToString
Utwórz obiekt na poziomie Hashtable
formularza i zadeklaruj trzy zmienne typu Person
. Dodaj następujący kod do Form1
klasy:
<?xm-deletion_mark author="v-bobbid" time="20080711T172143-0800"
data="private Hashtable MyTable = new Hashtable();
//For simplicity, create three Person objects to add to the HashTable collection.
Person Person1,Person2,Person3; "?>
<?xm-insertion_mark_start author="v-bobbid" time="20080711T172143-0800"?>
System.Collections.Hashtable MyTable = new
System.Collections.Hashtable();
//For simplicity, create three Person objects to add to the HashTable collection.
Person Person1,Person2,Person3;
<?xm-insertion_mark_end?>
W poniższych krokach użyj Add
metody Hashtable
obiektu, aby dodać trzy Person
obiekty do Hashtable
bloku.try-catch
Blok try-catch
przechwytuje wyjątek i wyświetla komunikat, jeśli istnieją zduplikowane klucze:
Umieść kontrolkę Przycisk w formularzu Form1 i zmień właściwość Text na Dodaj elementy.
Kliknij dwukrotnie przycisk, aby otworzyć okno Kod, a następnie wklej następujący kod w Button1_Click
zdarzeniu:
Person1 = new Person("David", "Burris");
Person2 = new Person("Johnny", "Carrol");
Person3 = new Person("Ji", "Jihuang");
//The Add method takes Key as the first parameter and Value as the second parameter.
try
{
MyTable.Add(Person1.Lname, Person1);
MyTable.Add(Person2.Lname, Person2);
MyTable.Add(Person3.Lname, Person3);
}
catch (ArgumentException ae)
{
MessageBox.Show("Duplicate Key");
MessageBox.Show(ae.Message);
}
Obiekt Hashtable
udostępnia indeksator. W poniższych krokach zaindeksuj wartość Key
, aby uzyskać dostęp do wartości przechowywanej w lokalizacji skrótu:
Dodaj kontrolkę Przycisk do formularza Form1 i zmień właściwość Name na Pobierz elementy.
Kliknij dwukrotnie przycisk i wklej następujący kod w Button2_Click
zdarzeniu:
//Use the indexer of the Hashtable class to retrieve your objects. The indexer takes
//Key as a parameter and accesses it with the Hashed location.
try
{
MessageBox.Show(MyTable[Person1.Lname].ToString());
MessageBox.Show(MyTable[Person2.Lname].ToString());
MessageBox.Show(MyTable[Person3.Lname].ToString());
}
catch (NullReferenceException ex)
{
MessageBox.Show("Key not in Hashtable");
MessageBox.Show(ex.Message);
}
W poniższych krokach użyj Remove
metody , aby usunąć pojedynczy element z kolekcji HashTable
:
Dodaj kontrolkę Przycisk do formularza Form1 i zmień właściwość Text na Usuń element.
Kliknij dwukrotnie przycisk i wklej następujący kod w Button3_Click
zdarzeniu:
<?xm-deletion_mark author="v-bobbid" time="20080711T173011-0800" data="if (MyTable.Count == 0)
{
MessageBox.Show("There are no items in HashTable");
}
else
{
MessageBox.Show("The count before removing an Item is" + " " + MyTable.Count);
MessageBox.Show("Removing value stored at key value (Burris)");
Remove the object that is stored at the Key value Person1.Lname.
MyTable.Remove(Person1.Lname);
}
"?>
<?xm-insertion_mark_start author="v-bobbid" time="20080711T173011-0800"?>if (MyTable.Count == 0)
{
MessageBox.Show("There are no items in HashTable");
}
else
{
MessageBox.Show("The count before removing an Item is" + " " + MyTable.Count);
MessageBox.Show("Removing value stored at key value (Burris)");
// Remove the object that is stored at the Key value Person1.Lname.
MyTable.Remove(Person1.Lname);
}
<?xm-insertion_mark_end?>
W poniższych krokach należy wyliczyć elementy przechowywane w kolekcji HashTable
:
Dodaj kontrolkę Przycisk do formularza Form1 i zmień właściwość Text na Enumerate.
Kliknij dwukrotnie przycisk i wklej następujący kod w Button4_Click
zdarzeniu:
<?xm-deletion_mark author="v-bobbid" time="20080711T174252-0800"
data="IDictionaryEnumerator Enumerator;
if (MyTable.Count == 0)
MessageBox.Show("The hashtable is empty");
else
{
MessageBox.Show("Enumerating through the Hashtable collection");
Enumerator = MyTable.GetEnumerator();
while (Enumerator.MoveNext())
{
MessageBox.Show(Enumerator.Value.ToString());
}
}
ICollection MyKeys;
if (MyTable.Count == 0)
MessageBox.Show("The hashtable is empty");
else
{
MessageBox.Show("Accessing keys property to return keys collection");
MyKeys = MyTable.Keys;
foreach (object Key in MyKeys)
{
MessageBox.Show(Key.ToString());
}
}
"?>
<?xm-insertion_mark_start author="v-bobbid" time="20080711T174252-0800"?>
System.Collections.IDictionaryEnumerator Enumerator;
if (MyTable.Count == 0)
MessageBox.Show("The hashtable is empty");
else
{
MessageBox.Show("Enumerating through the Hashtable collection");
Enumerator = MyTable.GetEnumerator();
while (Enumerator.MoveNext())
{
MessageBox.Show(Enumerator.Value.ToString());
}
}
System.Collections.ICollection MyKeys;
if (MyTable.Count == 0)
MessageBox.Show("The hashtable is empty");
else
{
MessageBox.Show("Accessing keys property to return keys collection");
MyKeys = MyTable.Keys;
foreach (object Key in MyKeys)
{
MessageBox.Show(Key.ToString());
}
}
<?xm-insertion_mark_end?>
Ten kod deklaruje zmienną typu IDictionaryEnumerator
i wywołuje GetEnumerator
metodę kolekcji HashTable
. Zwrócony Enumerator
kod wylicza elementy w kolekcji i używa Keys
metody HashTable
, aby wyliczyć za pomocą kluczy.
W poniższych krokach użyj Clear
metody , aby wyczyścić element HashTable
:
Dodaj kontrolkę Przycisk do formularza Form1 i zmień właściwość Text na Clear.
Kliknij dwukrotnie przycisk i wklej następujący kod w Button5_Click
zdarzeniu:
MyTable.Clear();
MessageBox.Show("HashTable is now empty");
Wykonaj następujące kroki, aby skompilować i uruchomić aplikację:
HashTable
są dodawane trzy Person
obiekty.HashTable
. Zostaną wyświetlone trzy nowo dodane elementy.Burris
lokalizacji klucza jest usuwany.IDictionaryEnumerator
Wylicza elementy w HashTable
kolekcji, a Keys
właściwość HashTable
zwraca kolekcję kluczy.HashTable
.Uwaga
Przykładowe firmy, organizacje, produkty, nazwy domen, adresy e-mail, logo, osoby, miejsca i wydarzenia przedstawione w niniejszym dokumencie są fikcyjne. Żadne skojarzenie z prawdziwą firmą, organizacją, produktem, nazwą domeny, adresem e-mail, logo, osobą, miejscami lub wydarzeniami jest zamierzone lub nie powinny być wnioskowane.
Szkolenie
Moduł
Praca z tablicami i tabelami skrótów w skryptach programu Windows PowerShell - Training
W tym module wyjaśniono, jak używać tablic i tabel skrótów w skryptach programu Windows PowerShell.