백엔드 개발 C#.Net 튜토리얼 C#의 Hashtable 및 Dictionary 코드 예제에 대한 간략한 설명

C#의 Hashtable 및 Dictionary 코드 예제에 대한 간략한 설명

Mar 09, 2017 pm 03:21 PM

C#의 Hashtable 및 Dictionary 코드 예제에 대한 간략한 설명:

Dictionary () Hashtable()

먼저 저장된 데이터 유형

해시테이블은 일반적이지 않으며 유형에 안전하지 않습니다. 사전은 일반적이고 유형에 안전하지 않습니다.

Hashtable의 키값은 모두 Object형이지만 Dictionary의 키값은 데이터형을 지정할 수 있다.

즉, Hashtable에 Object 이외의 데이터 타입이 저장되어 있는 경우 해당 데이터를 꺼낼 때 타입 변환으로 표시해야 정상적으로 사용할 수 있습니다. 사전에는 이런 문제가 없습니다.

이런 점에서 Hashtable은 Dictionary

            Hashtable ht = new Hashtable();
            Dictionary<string, int> dic = new Dictionary<string, int>();
            ht.Add("A", 1);
            dic.Add("A", 1);
            //Console.WriteLine(ht["A"]+1);     //编译错误!Object类型不能和int类型直接进行相加。
              Console.WriteLine((int)ht["A"] + 1);//编译通过,输出结果为:2
            Console.WriteLine(dic["A"] + 1);    //编译通过,输出结果为:2
로그인 후 복사

와 동일합니다. 둘째, 데이터를 읽는 순서와 데이터를 추가하는 순서의 일관성

Dictionary와 Hashtable에서 데이터를 읽는 순서와 데이터를 추가할 때의 데이터 순서의 일관성은 보장할 수 없거나 일관성이 없다고 할 수 있습니다.

사전은 추가만 하고 삭제는 하지 않을 때 데이터를 읽는 순서를 일관되게 유지할 수 있습니다.

그러나 삭제 및 추가 작업 후에는 더 이상 데이터를 읽는 순서가 추가할 때의 순서와 동일하다는 보장이 없습니다.

아아아아

C#의 Hashtable 및 Dictionary 코드 예제에 대한 간략한 설명

Dictionary의 경우 요소를 삭제하면 새로 추가된 요소가 삭제된 요소의 위치를 ​​채우게 되므로 데이터를 추가하는 순서와 데이터를 읽는 순서가 일치하지 않게 됩니다.

Hashtable의 경우 특정 알고리즘에 따라 데이터 저장 순서가 계산되기 때문에 대부분의 경우 데이터를 읽는 순서와 데이터를 추가하는 순서가 일치하지 않습니다.

따라서 데이터 추가 시 순서를 유지해야 한다면 Dictionary와 Hashtable을 사용하지 않는 것이 가장 좋습니다.

셋째, 존재하지 않는 Key 값을 사용하여 Hashtable 또는 Dictionary의 값을 얻는 경우

Hashtable의 경우 존재하지 않는 Key 값을 사용하여 값을 얻으면 null이 반환됩니다.

Dictionary<int, int> dic = new Dictionary<int, int>();
            dic.Add(0, 0);
            dic.Add(1, 1);
            dic.Add(2, 2);

            Console.WriteLine("仅仅经过添加元素处理之后:");

            foreach (KeyValuePair<int, int> kvp in dic)
            {
                Console.WriteLine("Key:" + kvp.Key + " Value:" + kvp.Value);
            }

            dic.Remove(0);
            dic.Add(3, 3);

            Console.WriteLine("经过删除和添加元素处理之后:");

            foreach (KeyValuePair<int, int> kvp in dic)
            {
                Console.WriteLine("Key:" + kvp.Key + " Value:" + kvp.Value);
            }

            Console.ReadKey();
로그인 후 복사

C#의 Hashtable 및 Dictionary 코드 예제에 대한 간략한 설명

사전의 경우 존재하지 않는 키 값을 사용하여 값을 가져오면 "System.Collections.Generic.KeyNotFoundException" 유형의 예외가 발생합니다.

따라서 Dictionary 또는 Hashtable에서 값을 가져올 때 먼저 Key 값이 존재하는지 확인(ContainsKey() 메서드를 사용하여 확인)하여 예기치 않은 값이나 예외가 발생하는 것을 방지할 수 있습니다.

넷째, 스레드 안전성

Dictionary는 스레드로부터 안전하지 않고 Hashtable은 스레드로부터 안전합니다.

위 내용은 C#의 Hashtable 및 Dictionary 코드 예제에 대한 간략한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C#을 사용한 Active Directory C#을 사용한 Active Directory Sep 03, 2024 pm 03:33 PM

C#을 사용한 Active Directory 가이드. 여기에서는 소개와 구문 및 예제와 함께 C#에서 Active Directory가 작동하는 방식에 대해 설명합니다.

C#의 액세스 한정자 C#의 액세스 한정자 Sep 03, 2024 pm 03:24 PM

C#의 액세스 수정자에 대한 안내입니다. 예제 및 출력과 함께 C#의 액세스 한정자의 소개 유형에 대해 논의했습니다.

C#의 난수 생성기 C#의 난수 생성기 Sep 03, 2024 pm 03:34 PM

C#의 난수 생성기 가이드입니다. 여기서는 난수 생성기의 작동 방식, 의사 난수 및 보안 숫자의 개념에 대해 설명합니다.

C# 데이터 그리드 보기 C# 데이터 그리드 보기 Sep 03, 2024 pm 03:32 PM

C# 데이터 그리드 뷰 가이드. 여기서는 SQL 데이터베이스 또는 Excel 파일에서 데이터 그리드 보기를 로드하고 내보내는 방법에 대한 예를 설명합니다.

C# 스트링리더 C# 스트링리더 Sep 03, 2024 pm 03:23 PM

C# StringReader에 대한 안내입니다. 여기에서는 C# StringReader에 대한 간략한 개요와 다양한 예제 및 코드와 함께 작동하는 방법에 대해 설명합니다.

C#의 패턴 C#의 패턴 Sep 03, 2024 pm 03:33 PM

C#의 패턴 가이드. 여기에서는 예제 및 코드 구현과 함께 C#의 패턴 소개 및 상위 3가지 유형에 대해 설명합니다.

C# 직렬화 C# 직렬화 Sep 03, 2024 pm 03:30 PM

C# 직렬화 가이드. 여기에서는 C# 직렬화 개체의 소개, 단계, 작업 및 예제를 각각 논의합니다.

C# 스트링라이터 C# 스트링라이터 Sep 03, 2024 pm 03:23 PM

C# StringWriter 가이드. 여기에서는 C# StringWriter 클래스에 대한 간략한 개요와 다양한 예제 및 코드와 함께 작동하는 방법에 대해 설명합니다.

See all articles