본문 바로가기

전체 글315

c#_43 제너릭 Generics 타입 <T> 제너릭 Generics 타입에 대해서 알아보겠습니다. 제너릭 타입은 어떤 특정한 타입을 특정짓지 않고 제너릭 타입 자체를 파라미터로 받아들이도록 하여 클래스를 정의할 수 있습니다. 이렇게 함으로써 일부 타입이 다른 클래스나 인터페이스 또는 메소드를 여럿 만들지 않아도 됩니다.위 예제에서 보듯 타입이 각기 다른 size 변수를 여러 개의 클래스가 아닌 제너릭 타입을 붙혀 여러 개의 타입을 받을 수 있는 클래스로 정의했습니다.   https://play.google.com/store/apps/details?id=com.goldenegg 골든 에그 - Google Play 앱수박 게임류의 머지 게임입니다.play.google.com   제너릭 타입을 활용한다면 불필요하게 클.. 2021. 9. 19.
c#_42 클래스 Virtual과 Override 가상 메소드(함수) 1 가상 함수에 대해서 알아보도록 하겠습니다. 클래스 내의 멤버 메소드에 virtual 키워드를 명시하면 그 메소는 상속을 받은 자식 함수에서 재정의를 할 수 있게 됩니다. 위 예제에서 보듯 Test 클래스를 상속 받은 Child 클래스에서 TestFunc()라는 메소드를 재정의하고 있습니다. 이렇게 하는 이유는 메소드를 통한 기본 기능과 결과는 똑같을 수 있지만 그 과정은 각 개체들마다 다를 수 있기 때문입니다. 예를 들어 밥을 먹는 행위를 하는 메소드가 있다면 누군가는 오른손으로 먹지만 누군가는 왼손으로 먹을수도 있고 포크나 젓가락 등 먹는 행위는 같지만 그 과정은 다 다를 수 있습니다. 위 예제를 보시면 character 클래스에 Attack이라는 메소드가 있고 이를 가상 함수로 만들었습니다. 그리고 .. 2021. 9. 18.
c# 네임스페이스 Namespace 네임 스페이스에 대해서 알아보도록 하겠습니다. 네임 스페이스는 수 없이 많은 클래스들 간의 충돌을 방지하고자 사용합니다. 비슷한 의미와 역할을 하는 클래스들을 비롯한 개체들은 이름이 비슷하거나 똑같을 수도 있습니다. 특히 큰 프로젝트의 경우 여러 사람이 작업을 진행하게 되는데 이 경우 문제가 여러 곳에서 발생할 수도 있습니다. 그래서 이 네임 스페이스를 활용해 클래스들을 관리하고 사용합니다. c#의 .net 프레임 워크의 경우 무려 11,000여개의 클래스들이 존재함에 따라 네임 스페이스가 적극적으로 활용되고 있습니다.위 이미지를 보듯 한 네임 스페이스 내에 같은 이름의 클래스가 존재한다면 당연히 오류가 발생하지만 서로 다른 네임 스페이스에 존재하는 같은 이름의 클래스는 충돌이 일어나지 않습니다. 네.. 2021. 9. 15.
c#_null 조건 연산자들 지난 포스팅에서 null에 대해서 알아보았습니다. 이번 포스팅에선 null과 관련된 연산자들을 알아보도록 하겠습니다. Nuallable, ? int, float을 비롯한 value타입도 위 이미지의 두 예제처럼 null값을 대입할 수 있습니다. 위 이미지의 두 방식은 동일합니다. Nuallable과 ?은 value타입에만 적용이 가능하고 참조 타입은 적용이 불가능합니다. ?. null 조건 연산자 ?.경우 왼쪽항의 변수가 null이면 null을 반환하고 아니면 오른쪽항의 속성을 반환합니다. ?[] 배열이나 리스트의 요소가 null인지 아닌지 체크한 후 null이면 null을 반환하고 아니면 요소를 반환합니다. ?? ??는 왼쪽항의 변수가 null이면 오른쪽항의 값을 대입하고, null이 아니면 변수의 값.. 2021. 9. 13.
c#_null ?? 널? null 조건 연산자에 대해 알아보기전에 일단 null에 대해서 알아보도록 하겠습니다. null은 아무것도 아닌 값입니다. 값이라는 말 자체가 모순일수도 있지만 비어있는 상태를 뜻합니다. 어떠한 값도 없는 상태인 것이죠. 하지만 이 null값을 아무곳에나 쓸 순 없습니다. 보통 객체의 상태가 null인지 아닌지 판단할 때 사용을 하는데 이것도 하나의 값이기에 Nullable타입이 아니면 값을 대입할 수 없습니다. 위 예제에서 보시듯 int형을 비롯한 value타입들은 null값을 대입할 수 없습니다. 반면에 위의 참조 형식들은 null값을 허용함으로써 객체가 null상태인지 아닌지 판단할 수 있습니다. 사용자 자료형인 클래스 역시 null 값을 허용합니다. 이런 식으로 null값을 활용해 객체의 상태를 .. 2021. 9. 11.
c#_41 콜렉션 Collection : 딕셔너리 Dictionary <TKey,TValue> 간단한 사용방법 2 ContainsKey 문자열에 해당하는 키가 존재할 경우 true, 없으면 false를 반환합니다. ContainsValue 문자열에 해당하는 Value가 존재할 경우 true, 없으면 false를 반환합니다. 다만 Key와는 달리 동일한 Value는 존재가 가능함으로 먼저 검색된 값을 기준으로 반환합니다. TryGetValue 문자열의 Key가 존재한다면 Key에 해당하는 Value를 반환합니다. 아래의 예제처럼 활용도 가능합니다. 활용 아이템의 정보를 담고 있는 구조체를 Value로서 딕셔너리에 Key와 함께 담아 관리합니다. 위 예제는 하나의 활용법일 딕셔너리를 포함한 여러 컬렉션의 활용법은 무궁무진합니다. 상황에 맞는 컬렉션과 방법을 선택해서 활용하시면 되겠습니다. 2021. 8. 30.
c# var 키워드 (implicitly typed local variable) var에 대해서 알아보겠습니다. var은 implicitly typed local variable 암시적 타입 지역변수 입니다. 이게 무엇이냐? 사용자에 의해 지역변수의 타입이 정해지는 것이 아니라 컴파일러에 의해서 타입이 정해지는 것입니다. 위 예제에서 보듯 int타입을 명시적으로 선언하고 초기화하고 있는데 반해 var의 경우 어떠한 키워드 없이 값이 대입되고 있는 것을 볼 수가 있습니다. var은 대입되는 값의 타입에 따라서 컴파일러에 의해 타입이 정해집니다. 그렇기에 var를 통해서 지역변수를 선언하려면 바로 초기화를 해주어야 합니다. 대입되는 값의 타입에 따라 변수의 타입은 암시적으로 정해집니다. 당연하게도 그 변수는 다른 타입의 값을 대입하게되면 오류가 발생합니다. 이 var키워드는 지역변수에만.. 2021. 8. 25.
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.
프레임 워크란?? 개발을 하며 많이 듣게될 단어인 프레임 워크에 대해서 알아보도록 하겠습니다. 어떠한 일을 함에 있어 일정한 틀이나 규칙없이 자유롭게 일을 할 수 있다면 그 나름대로의 장점은 있겠지만 만약 그 일을 누군가가 시행착오 끝에 해결할 수 있는 틀을 만들어놓았다면 굳이 처음부터 시행착오를 겪으며 일 처리를 할 필요가 없겠죠? 이렇게 어떠한 목적에 맞게끔 틀이나 규칙을 만들어 둔 것이 프레임 워크입니다. IT개발 쪽에서 프레임 워크라고 한다면 개발 목적에 맞는 라이브러리들을 모아둔 것이라고 볼 수 있습니다. 라이브러리 역시 따로 포스팅 하겠지만 특정 기능을 재사용하기 편하게 모아놓은 코드 집합이라고 보시면 되겠습니다. 게임 개발을 예로 들어 게임을 만들기에 적합한 프레임 워크를 사용한다면 개발 시간이 대폭 줄어들게.. 2021. 8. 15.
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.
반응형