Yang.공부방

Dictionary<TKey,TValue>Class (네임스페이스 : System.Collections.Generic)

: 값을 키와 함께 받아 HashTable에 저장한다. 

: 키 값을 통해 데이터를 빠르게 검색 가능(키 값에 따라 검색 속도는 다르다)

: Add를 사용하여 키와 값을 저장


TKey : 사전에 있는 키의 형식

TValue : 사전에 있는 값의 형식


상속 : Object -> Dictionary<TKey,TValue>

파생 : System.ServiceModel.MessageQuerySet


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Test_01
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<stringstring> Test = new Dictionary<stringstring>();
 
            Test.Add("key""value");
            Test.Add("양재""공부좀해");
            Test.Add("코딩""잘하고싶다");
            //요소 추가
 
            try
            {
                Test.Add("txt""winword.exe");
            }
            catch(ArgumentException)
            {
                Console.WriteLine("an element with Key = \"txt\" already exists.");
            }
            // 중복키일 경우 ArgumentException 발생
 
            Console.WriteLine("for key = \"코딩\", value = {0}.", Test["코딩"]);
            //출력 : for key = 코딩, value = 잘하고싶다
            
        }
    }
}
 
cs


'C# > 과제' 카테고리의 다른 글

속성  (0) 2019.04.03
[Collection]ArrayList  (0) 2019.04.01
//미완// Collection[컬렉션]  (0) 2019.03.31
Boxing 및 Unboxing  (0) 2019.03.29
(3.25) 몬스터 공격하기 ver.수정  (0) 2019.03.26

속성

C#/과제2019. 4. 3. 01:44

읽기전용(get 포함 , set 미포함)[속성이란]

: 전용필드의 값을 읽기(get),쓰기(set),계산하는 유연한 메커니즘을 제공하는 멤버

접근자라는 특수 메서드이다.

메서드의 안정성, 유연성 수준을 올리는데 도움을 준다.


[개요]

클래스구현, 검증코드를 숨기는 동시에 값을 가져오고 설정방법을 공개적으로 노출할 수 있다.


get속성 접근자 : 속성값반환하는데 사용 (읽기전용(get 포함 , set 미포함))

: private필드의 값을 반환

set속성 접근자 : 새 값을 할당하는데 사용 (쓰기전용(set포함, get미포함))

:private필드의 값을 할당 전 데이터 유효성 검사

value키워드 : set접근자가 할당하는 값을 정의




'C# > 과제' 카테고리의 다른 글

Dictionary<TKey,TValue>Class  (0) 2019.04.03
[Collection]ArrayList  (0) 2019.04.01
//미완// Collection[컬렉션]  (0) 2019.03.31
Boxing 및 Unboxing  (0) 2019.03.29
(3.25) 몬스터 공격하기 ver.수정  (0) 2019.03.26

[Collection]ArrayList

C#/과제2019. 4. 1. 01:29

[ArrayList]  : 사용하지 않는것을 권장함 

배열과 유사한 collection(배열 : 고정된개수, ArrayList : 동적)

  • 상속 : Object -> ArrayList

  • List와 흡사하지만 ArrayList는 Object Type으로 구성(모든type변수를 담을 수 있다)되어 있으며 

       데이터활용 시 Boxing과Unboxing이 불가피하므로 형식의 불안정성 증가 및 속도저하가 List보다 훨씬 크다.

  • 필요에 따라 동적으로 증가

  • 인덱스로 컬렉션 요소에 접근이 가능하고 특정요소를 바로 읽고 쓰기가능




[ArrayList 함수] 변수를 가지고있다.

Add() :개체를 Array 끝부분에 추가합니다 (값은 null이 될 수 있다)

1
2
3
4
5
6
7
8
9
10
11
12
ArrayList arrFruits = new ArrayList();
var idx = arrFruits.Add("사과");
Console.WriteLine("idx ; {0}", idx);
arrFruits.Add("오렌지");
arrFruits.Add("포도");
Console.WriteLine(arrFruits); //출력값 : arrFruits의 인스턴스
//Add메서드 , 반환타입 : int , 매개변수 Object
 
foreach(Object list in arrFruits)
{
    Console.WriteLine(list);
}
cs

AddRange() 끝 부분에 ICollector의 요소를 복사

Insert() : 지정된 인덱스에 요소 삽입

Remove() : 맨 처음 발견된 요소 삭제

RemoveAt() : 지정된 인덱스에서 요소 삭제

BinarySearch() : 이진 검색하여 특정요소 찾기 (검색 전 Sorting)

Reverse() : 순서를 반대로 전환

Sort() : 정렬

Contain() : 요소가 ArrayList에 있는지 확인

Clear() : 모든요소 삭제



'C# > 과제' 카테고리의 다른 글

Dictionary<TKey,TValue>Class  (0) 2019.04.03
속성  (0) 2019.04.03
//미완// Collection[컬렉션]  (0) 2019.03.31
Boxing 및 Unboxing  (0) 2019.03.29
(3.25) 몬스터 공격하기 ver.수정  (0) 2019.03.26

Collection이란? (자료구조 모음)

개체 그룹을 만들고 관리한다

[개체를 그룹화 하는 방법 2가지]

1. 개체배열생성

2. 개체컬렉션생성

작업하는 개체그룹이 동적으로 확장, 축소

일부 컬렉션의 경우 모든개체의 키를 할당하여 개체를 빠르게 검색 가능

클래스이므로 요소 추가 시 인스턴스를 선언해야 한다.

단일 데이터 형식의 요소만 포함된 경우,네임스페이스사용을 선언해야 한다 (Ex. Using System.Collections; , 구체적형식의 개체가 아닌 Object형식을 개체요소로 저장)

다른 데이터형식을 추가할 수 없도록 형식안전성을 적용


[Generic]제너릭컬렉션

검색할 경우 형식을 결정하거나 변환할 필요 없다

모든 항목에 동일한 데이터 형식이 있는 경우 유용하다.

원하는 데이터 형식만 추가할 수 있도록 한다.



List<T> 

필요에 따라 크기가 동적으로 증가하는 개체배열 (Boxing, Unboxing)

검색,정렬,수정 메서드 제공


[일반화?]

: 클래스 또는 메서드를 선언하고 인스턴스화 할 때 까지 하나 이상의 형식사양을 따르는 클래스 및 메서드를 디자인할 수 있도록 만드는 형식

<T>

형식을 컴파일러에서 자동으로 유추한다(제약조건,반환 값 만으로는 형식매개변수유추 불가)



Boxing, Unboxing 참조 : https://yangjae.tistory.com/manage/newpost/14?type=post&returnURL=https://yangjae.tistory.com/14

Boxing, Unboxing 참조 doc : https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/types/boxing-and-unboxing




IndexOf(object) 

: 인스턴스 멤버 메서드 (검색할때 해당문자열이 없을 시 인덱스 -1표시)

1
2
3
4
5
6
7
8
9
10
11
12
static void Main(string[] args)
{
ArrayList arrFruits = new ArrayList();
var idx = arrFruits.Add("사과");
arrFruits.Add("오렌지");
arrFruits.Add("포도");
 
idx = arrFruits.IndexOf("포도");
Console.WriteLine(idx); // 출력값 :2
idx = arrFruits.IndexOf("포또");
Console.WriteLine(idx); // -1 으로 표시
}
cs

[Hashtable]

[Queue]

[Stack]






'C# > 과제' 카테고리의 다른 글

속성  (0) 2019.04.03
[Collection]ArrayList  (0) 2019.04.01
Boxing 및 Unboxing  (0) 2019.03.29
(3.25) 몬스터 공격하기 ver.수정  (0) 2019.03.26
Stack 과 Heap  (0) 2019.03.25

Boxing 및 Unboxing

C#/과제2019. 3. 29. 16:57

Boxing

: 값 형식(Stack) -> Object형식(Heap)으로 변환하는 프로세스

: Heap에 저장한다

: 암시적이다

int i =123;
object o =i;

Unboxing

: Object -> 값 형식으로 변환

: 개체에서 값 형식이 추출됩니다.

: 명시적이다

o = 123;
i = (int)o; //o의 주소값

'C# > 과제' 카테고리의 다른 글

[Collection]ArrayList  (0) 2019.04.01
//미완// Collection[컬렉션]  (0) 2019.03.31
(3.25) 몬스터 공격하기 ver.수정  (0) 2019.03.26
Stack 과 Heap  (0) 2019.03.25
몬스터 처치하기  (0) 2019.03.25