해시 컬렉션을 Visual C# 사용 방법을

기술 자료 번역 기술 자료 번역
기술 자료: 309357 - 이 문서가 적용되는 제품 보기.
이 문서에서는 Microsoft Visual Basic .NET 버전에 307933 참조하십시오.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 해시 컬렉션을 사용하는 방법을 보여 줍니다. 해시 데이터를 검색하는 데 비용이 많이 드는 데이터 검색 필요가 없으므로 해시 데이터를 효율적으로 검색할 수 있습니다. 해시 키 자체는 값을 사용하여 데이터를 찾습니다.

기본 클래스 라이브러리를 직접 해시 테이블 코드 필요하지 않은 있도록 System.Collections 네임스페이스에 정의된 해시 클래스를 제공합니다.

단계를 샘플을 빌드하려면

해시 컬렉션 (키, 값) 쌍이 저장하고 해시 및 저장소 위치를 가져오는 데 사용합니다. 변경할 수 및 중복 항목이 있는 해시 가질 수 없습니다. 이 샘플에서는 간단한 Person 클래스 인스턴스가 여러 개를 있는 해시 저장하는 예제입니다. 성은 로 사용됩니다.
  1. Microsoft Visual Studio를 열고 Windows Forms 응용 프로그램 프로젝트를 Visual C# 에서 만듭니다. 기본적으로 Form1이 프로젝트에 추가됩니다.
  2. 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로, 추가 를 가리킨 다음 클래스 클래스 모듈 추가 클릭하십시오. Class1 기본적으로 프로젝트에 추가됩니다.
  3. Class1 모듈의 코드를 다음 코드로 바꿉니다:
     public class Person
    {
    	public string Fname, Lname;
    
    	public Person(string FirstName, string LastName)
    	{
    		Fname = FirstName;
    		Lname = LastName;
    	}
    
    	public override string ToString()
    	{
    		return Fname + " " + Lname;
    	}
    }
    						
    Person 클래스 이름 매개 변수 및 이러한 매개 변수를 로컬 변수에 할당하는 하나의 생성자가 있습니다. ToString 함수를 ToString을Fname 및 함께 연결된 Lname 돌아가려면 Object 클래스에서 재정의합니다.
  4. 폼 수준 Hashtable 개체를 만들고 사람 형식의 세 개의 변수를 선언하십시오. Form1 클래스에 다음 코드를 추가하여:
    <?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?>
    					
  5. 다음 단계에서 try-catch 블록에 Hashtable사람 개체를 추가하려면 Hashtable 개체의 Add 메서드를 사용하십시오. try-catch 블록에 예외를 catch한 다음 중복 키가 존재할 경우 메시지를 표시하는:
    1. Form1 Button 컨트롤을 배치하고 항목 추가Text 속성을 변경하십시오.
    2. 해당 코드 창 열기 단추를 두 번 클릭하고 Button1_Click 이벤트에 다음 코드를 붙여:
      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);
      }
      						
  6. Hashtable 개체는 인덱서를 제공합니다. 다음 단계에서, 해시된 위치에 저장된 값에 액세스하는 데 인덱스:
    1. 항목 가져오기Name 속성을 변경하고, Form1에 Button 컨트롤을 추가하십시오.
    2. 단추를 두 번 및 Button2_Click 이벤트에 다음 코드를 붙여:
      //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);
      } 
      						
  7. 다음 단계는 해시 컬렉션에서 단일 항목을 제거하려면 Remove 메서드를 사용하십시오.
    1. 항목 제거Text 속성을 변경하고, Form1에 Button 컨트롤을 추가하십시오.
    2. 단추를 두 번 클릭한 Button3_Click 이벤트에 다음 코드를 붙여:
      <?xm-deletion_mark author="v-bobbid" time="20080711T173011-0800" data="if (MyTable.Count == 0) 
      {
      	MessageBox.Show(&quot;There are no items in HashTable&quot;);
      }
      else
      {
              MessageBox.Show(&quot;The count before removing an Item is&quot; + &quot; &quot; + MyTable.Count);
              MessageBox.Show(&quot;Removing value stored at key value (Burris)&quot;);
              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?>
      						
  8. 다음 단계는 해시 컬렉션에 저장된 항목을 열거할:
    1. 열거Text 속성을 변경하고, Form1에 Button 컨트롤을 추가하십시오.
    2. 단추를 두 번 및 Button4_Click 이벤트에 다음 코드를 붙여:
      <?xm-deletion_mark author="v-bobbid" time="20080711T174252-0800" data="IDictionaryEnumerator Enumerator;
      
      if (MyTable.Count == 0)
      	MessageBox.Show(&quot;The hashtable is empty&quot;);
      else
      {
      	MessageBox.Show(&quot;Enumerating through the Hashtable collection&quot;);
      	Enumerator = MyTable.GetEnumerator();
              
              while (Enumerator.MoveNext())
      	{
      	        MessageBox.Show(Enumerator.Value.ToString());
      	}
      }
      
      ICollection MyKeys;
           
      
      if (MyTable.Count == 0) 
             MessageBox.Show(&quot;The hashtable is empty&quot;);
      else
      {
             MessageBox.Show(&quot;Accessing keys property to return keys collection&quot;);
             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?>
      이 코드는 IDictionaryEnumerator 형식의 변수를 선언하고 해시 컬렉션의 GetEnumerator 메서드를 호출합니다. 반환된 표시기 를 사용하여 코드를 통해 컬렉션에 있는 항목의 열거하고 해시 메서드를 통해 키를 열거하는 데 사용합니다.
  9. 다음 단계에서 해시 지우려면 지우기 메서드를 사용하십시오.
    1. Form1에 Button 컨트롤을 추가하고 Text 속성을 지우기 변경하십시오.
    2. 단추를 두 번 및 Button5_Click 이벤트에 다음 코드를 붙여:
      MyTable.Clear();
            MessageBox.Show("HashTable is now empty");
      						
  10. 빌드 및 응용 프로그램을 실행하려면 다음과 같이 하십시오.
    1. 항목 추가 클릭하십시오. 세 사람 개체를 해시 컬렉션에 추가되는 유의하십시오.
    2. 항목 가져오기 를 클릭하십시오. 인덱서를 해시 컬렉션에 있는 항목의 얻은 유의하십시오. 항목이 표시되는 세 가지 새로 추가되었습니다.
    3. 항목 제거 를 클릭하십시오. "Burris" 키 위치에 있는 항목을 삭제할 유의하십시오.
    4. 열거 를 누릅니다. 해시 컬렉션의 항목을 통해 IDictionaryEnumerator 열거합니다 및 키 컬렉션, 해시 속성을 반환하는 유의하십시오.
    5. 지우기 를 클릭하십시오. 해시 컬렉션에서 모든 항목을 지우려면 유의하십시오.
참고 회사, 조직, 제품, 도메인 이름, 전자 메일 주소, 로고, 사람, 장소, 및 이벤트 등은 실제 데이터가 아닙니다. 모든 실제 회사, 조직, 제품, 도메인 이름, 전자 메일 주소, 로고, 사람, 장소 또는 연결된 작성되었습니다 유추해서도 안됩니다.

속성

기술 자료: 309357 - 마지막 검토: 2008년 7월 15일 화요일 - 수정: 4.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
키워드:?
kbmt kbhowtomaster KB309357 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com