본문 바로가기

프로그래밍/c#64

c#_40 콜렉션 Collection : 딕셔너리 Dictionary <TKey,TValue> 간단한 사용방법 1 콜렉션 중 딕셔너리(Dictionary)에 대해 알아보도록 하겠습니다. 딕셔너리는 데이터를 구별할 수 있는 Key와 데이터인 Value의 KeyValuePair의 타입을 저장하는 콜렉션입니다. 이름에서 유추할 수 있듯 사전처럼 색인을 통해 단어의 뜻이나 정보를 찾을 수 있습니다. Key와 Value가 한 쌍으로 이 Key를 통해서 Value값을 알 수 있습니다. 당연하게도 Key를 통해 구분하다보니 Key는 중복될 수 없습니다. 딕셔너리 역시 콜렉션 자료구조로 using System.Collections.Generic이 선언되어 있어야 사용할 수 있습니다. 이미지에서 보듯 다른 자료구조와는 달리 딕셔너리는 Key와 Value에 쓰일 두 개의 자료형이 필요합니다. 위 예제에선 Key와 Value의 자료형을.. 2021. 8. 22.
c#_39 콜렉션 Collection : 리스트 List<T> 이번 포스팅은 자료구조 콜렉션 중 리스트에 대해서 알아보도록 하겠습니다. 이 리스트 역시 제너릭 콜렉션이므로 어떠한 자료형도 저장이 가능합니다. 예제에서 보듯 저장자체는 배열을 떠올리게 합니다. 접근 역시 배열처럼 접근하면 됩니다. 다만 배열과는 달리 리스트는 데이터를 저장하고 제거하기에 수월합니다. 원하는 위치에 데이터를 저장할수도 있고, 원하는 위치의 데이터나 리스트 안의 데이터 중 원하는 값을 선택해 제거하기도 쉽습니다. 먼저 데이터를 추가할 수 있는 Add메소드를 먼저 보도록 하겠습니다. 리스트의 Add메소드를 통해서 데이터를 저장할 수 있습니다. 저장을 하게 되면 자동으로 리스트의 크기를 늘려서 저장합니다. Insert의 경우 원하는 위치에 데이터를 저장할 수 있습니다. 먼저 위치를 지정하고 저.. 2021. 8. 15.
c#_38 콜렉션 Collection : 큐 Queue<T> 이번 포스팅에선 자료구조 콜렉션(Collection) 중 큐(Queue)에 대해서 알아보도록 하겠습니다. 지난 포스팅에서의 스택과 비슷하지만 큰 차이라면 선입선출이라는 것입니다. 스택의 경우 늦게 들어온 데이터가 먼저 나가는 선입후출의 구조이지만 큐의 경우 먼저 들어온 데이터가 먼저 나가는 선입선출입니다. 스택과 마찬가지로 System.Collections.Generinc 라이브러리가 추가되어있어야 합니다. 저장하고 싶은 자료형을 명시하고 큐를 생성합니다. 이후 Enqueue메소드를 사용해 데이터를 저장합니다. 스택과는 다르게 선입선출이므로 먼저 저장된 데이터부터 출력이 되는 것을 볼 수가 있습니다. Dequeue메소드를 사용하면 저장된 데이터 중 가장 먼저 저장된 데이터먼저 큐에서 제거됩니다. 출력 결.. 2021. 8. 5.
c#_37 콜렉션 Collection : 스택 Stack<T> 콜렉션(Collection)에 대해 알아보도록 하겠습니다. 보통 자료구조(Data Structure)라고도 불리며 데이터를 저장하거나 검색하는 등 데이터를 효율적으로 관리하기 위해서 쓰이는 것이 바로 콜렉션입니다. 다양한 콜렉션이 존재하며 상황에 따라 적절한 콜렉션을 활용하면 됩니다. 오늘은 콜렉션 중 스택(Stack)에 대해서 먼저 살펴보도록 하죠. 스택은 선입후출의 방식으로 데이터를 저장하고 관리합니다. 위 그림에서 보듯 데이터가 들어오는 순서대로 쌓이고 데이터를 사용할 때는 늦게 들어온 데이터부터 꺼내어 사용하게 됩니다. 스택을 사용하려면 System.Collections.Generinc 라이브러리를 추가해야합니다. 추가하지 않으면 스택를 비롯한 콜렉션들을 사용할 수가 없습니다. 스택 클래스와 어떤.. 2021. 8. 4.
c#_36 중첩 클래스 Nested class 반복문이나 조건문의 중첩처럼 클래스 역시 중첩이 가능합니다. 예제에서 보듯 외부 클래스에 내부 클래스를 선언함으로써 중첩이 가능합니다. 활용 방법이야 다양하겠지만 비슷한 자원끼리 묶어서 관리하기 위해 사용하기도 합니다. 이렇게 함으로써 코드의 가독성 또한 올라가겠지요. OutClass내부에 선언된 InClass가 private으로 선언이 되어 OutClass와 InClass내에선 접근이 가능하고 InClass를 생성할수 있는 것을 볼 수 있습니다. 당연하게도 InClass내부의 private으로 선언된 height필드는 InClass내에서만 접근이 가능하기에 InClass의 Test메소드 내에선 접근이 불가능한 것 역시 볼 수 있습니다. 외부 클래스에선 InClass를 생성할 수 없습니다. 외부에서 In.. 2021. 8. 1.
c#_35 분할 클래스 partial class 분할 클래스 partial class에 대해 알아보도록 하겠습니다. 분할 클래스는 하나의 클래스를 여러개의 클래스 분할하는 걸 말합니다. 클래스는 비록 분할되어있지만 객체를 생성 시엔 일반 클래스와 똑같은 기능을 합니다. partial 한정자를 class 앞에 붙임으로서 클래스 분할이 가능합니다. 아래의 예제를 통해 더 알아보도록 하죠. 위 예제에서 보듯 필드, 생성자, 메소드 별로 클래스를 분할했습니다. 비록 클래스는 분할이 되었지만 객체 생성 시 일반 클래스처럼 사용이 가능합니다. 당연하게도 상속 역시 가능합니다. 클래스의 코드가 길거나 기능별로 분할하고자 할때 이 partial 한정자를 통해서 클래스를 분할하세요~ 2021. 7. 26.
c#_34 Sealed 클래스 sealed 한정자는 클래스 또는 메소드(함수)와 함께 쓰입니다. sealed의 단어 뜻처럼 클래스나 메소드를 봉인함으로써 클래스의 상속과 메소드의 재정의를 방지하는 역할을 합니다. 클래스에서의 sealed 한정자 쓰임을 알아보도록 하겠습니다. 위 예제처럼 class 앞에 sealed 한정자를 써두면 끝!! sealed한정자를 써둔 class인 SealedParents 클래스를 SealedChild 클래스에서 상속을 하려고 하지만 sealed한정자로 인해 오류가 납니다. 이처럼 상속이 필요없는 클래스의 경우 상속을 방지해놓음으로써 혹여나 있음 실수를 미연해 방지할 수 있겠죠? 그 외 여러 상황에서 이 sealed 한정자가 필요하다면 활용하시면 되겠습니다. 2021. 7. 25.
c#_33 클래스 상속(Class inheritance) 상속이라 하면 보통 부모의 재산을 자식이 물려받는 것을 말합니다. 이 클래스의 상속 역시 부모의 자원을 물려받는 다는 것은 똑같습니다. 다만 부모의 모든 것을 물려받는 것이 아닌 물려주고자 하는 자원들만 상속을 받게 됩니다. 상속을 하는 이유는 각 객체들이 공통적으로 가지게 되는 자원들을 편리하게 사용하기 위함입니다. 사람을 예로들어 설명해보겠습니다. 사람이라는 객체가 공통적으로 가지게 되는 상태와 기능들이 있습니다. 이러한 자원들은 사람이라면 모두 가지고 있죠. 그리고 각 개인들만이 독립적으로 가지고 있는 상태와 기능들도 있을 겁니다. 만약 개인에 해당하는 객체들을 클래스로 만들어 생성한다면 그 수가 작을 땐 큰 문제가 없을 수 있지만 그 수가 많다면 공통되는 상태와 기능에 대한 코드를 일일히 다 써야.. 2021. 7. 20.
c#_32 클래스 Class 생성자, 소멸자 생성자와 소멸자에 대해 알아보도록 하겠습니다. 생성자(Constructor) 생성자는 말 그대로 객체가 생성 시에 호출되는 메소드(함수)입니다. 메소드와 다른 점은 반환 형식도 없고 값을 반환할수도 없다는 것입니다. 아래의 예제를 통해 알아보도록 하겠습니다. 위 예제에서 보시듯 생성자는 객체가 생성되며 호출이 됩니다. 더불어 반환 형식자체가 없다는 것도 알 수 있습니다. 예제에선 클래스 내에 생성자를 선언하였지만 명시적으로 생성자를 선언하지 않아도 기본적으로 생성자가 호출이 됩니다. 보통 생성자는 필드. 즉 멤버 변수들의 초기화에 활용됩니다. 생성자는 메소드처럼 오버로딩이 가능합니다. 예제를 통해 보겠습니다. 각각의 생성자로 객체가 생성이 되고 있습니다. 예제에서 보듯 생성자는 메소드처럼 오버로딩이 가능.. 2021. 7. 19.
c#_31 접근 제한자, 접근 한정자 private, public, protected 접근 제한자에 대해서 알아보도록 하겠습니다. 접근 제한자 또는 접근 한정자는 말 그대로 접근의 범위를 제한하거나 일부만 접근할 수 있도록 한정짓습니다. 접근 제한자 접근 가능 범위 private 자신의 클래스 내부 protected 부모 클래스 자신 내부와 부모 클래스를 상속받은 자식 클래스 내부 public 모든 곳에서 접근 가능 이 외에도 internal과 protected internal도 있지만 이번 포스팅에선 위 접근 제한자들에 대해서 알아보도록 하겠습니다. 이미지에서 Test클래스를 만들어 변수 a는 public으로 변수 b는 private으로 선언했습니다. 그리고 타 클래스인 Program 클래스 내의 Main메소드(함수) 내에서 Test 클래스 객체를 생성 후 각각 접근했습니다. 이미지에서.. 2021. 7. 12.
c#_30 클래스 Class 1 클래스(Class)에 대해서 알아보도록 하겠습니다. 객체 지향 프로그래밍에 대해서 전혀 모른다면 지난 포스팅인 절차지향과 객체지향 포스팅을 한번 보고 오시는 게 좋습니다. https://ks-factory.tistory.com/35 절차 지향과 객체 지향 클래스에 대해 알아보기 전에 먼저 절차지향과 객체지향 프로그래밍에 대해서 간단히 알아보고 넘어가도록 하겠습니다. 절차 지향(Procedural Programming) 절차 지향은 컴퓨터의 연산 방식과 유사한 ks-factory.tistory.com 클래스는 객체. 사람을 포함한 모든 사물들의 상태와 기능을 한데 모아놓은 데이터의 집합체 입니다. 우선 이미지를 통해 알아보도록 하겠습니다. 위 이미지에서 보듯 모든 사람은 이름, 나이, 키의 상태와 걷기, .. 2021. 7. 8.
c#_29 배열:Array2 다차원 배열 지난 배열 포스팅에 이어 다차원 배열에 대해서 알아보겠습니다. 다차원 배열은 기존의 1차원의 배열 즉 가로 또는 세로(보통은 가로로 표현)로 한 줄로만 구성된 배열이 아닌 가로와 세로를 포함한 그 이상의 배열로 구성된 것을 말합니다. 아래의 그림을 통해서 알아보도록 하겠습니다. 그림에서 보듯 1차원은 일반 주택을 나열한 것에 비유할 수 있고, 2차원 배열은 아파트에 비유할 수 있겠습니다. 물론 2차원 이상의 다차원 배열도 구성이 가능합니다. 보통 2차원 이상은 잘 쓰이지 않지만요... 아래의 그림은 4,6의 크기를 가진 2차원 배열입니다. 4행 6열의 2차원 배열이죠. 각 요소에 접근하기 위한 방법은 1차원 배열과 비슷합니다. 다만 두 개의 인덱스가 필요합니다. 만약 1행 2열에 있는 요소(값)을 가져오.. 2021. 6. 9.
반응형