728x90

C# 25

[C#] out과 ref / stack과 queue / Hashtable과 Dictionary

Out / ref (modifier) C#에서 기본 데이터 형식 매개변수는 call by value, value로 값 전달이 기본이다. 이를 reference 형식으로 바꾸고 싶다면 ref / out 키워드를 사용한다. value와 reference의 차이를 예시를 들어 설명하자면 static void example(int a){ a = 3; } 위의 코드는 기존의 존재한 int a를 받아 3으로 바꾸는 코드이다. 하지만 void로 설정되어있어 이를 return으로 받지 않는 한 C#은 value형식이기 때문에 a는 3으로 바뀐걸 전달해주지 못한다. 만일 return을 쓰지 않고도 값을 바꾸고 싶다면 reference 형식으로 바꿔야 한다. static void example1(ref int a){ a ..

공부/C# 2023.03.27

[C#] 예외처리 try-catch의 이용과 자료구조 Array, List, ArrayList 차이

예외처리 if / switch : 값의 예외 try - catch : 흐름의 예외 => 버그가 터져도 코드가 계속 이어져야 될 때 사용 try - catch try { 정상 실행할 코드 } catch (예외) { 예외 발생시 처리 } catch (예외2) { 예외2 발생시 처리 } finally {try든 catch든 꼭 마지막에 실행} try내의 코드에서 예외가 발생할 시 catch에서 처리하고 다시 try가 감싸는 코드를 실행한다. catch절은 try절에서 던질 예외 객체와 같은 형식이어야 한다. 예외를 던질 때는 throw를 사용하기도 한다. 예를 들어 array등의 초기값이 설정이 안되어있으면 비어있는 Null값이 들어있는데 이에 접근하려하면 Null관련 예외처리 많이 발생한다. string은 ..

공부/C# 2023.03.24

[C#] 상속과 virtual, abstract, interface / 오버로딩, 오버라이딩 코드

앞의 내용에서 상속을 다뤘는데, virtual / abstract / interface와는 무슨 연관이 있을가? 본래 상속은 단일 클래스만 가능한 일이지만, 다중 상속이 가능한 키워드가 있다. 부모클래스에서 protected / public으로 선언한 변수는 자식클래스에서도 참조가 가능하지만 private으로 선언한 변수는 안된다는 것은 모두 알고 있을것이다. 그렇다면 method, 즉 함수의 경우는 어떨까? protected / public으로 선언된 메소드는 위와 동일하다. 하지만 메소드를 재정의 하는 경우는 또 다르다. virtual(가상) abstract(추상) interface virtual : 재정의가 가능하고 이는 필수가 아니다. abstract: 재정의가 가능하지만 이는 필수이다. (abs..

공부/C# 2023.03.23

[C#] 상속(Inheritance) / 오버로딩 + 오버라이딩

상속이란 특정 기능(데이터와 동작)을 제공하는 기본 클래스를 정의하고 해당 기능을 다시 선언하지 않고 받아 사용하거나 재정의 할 수 있게 파생 클래스를 정의하는 기능이다. 객체 지향 프로그래밍 언어의 주요 특징 중 하나다. (추상화, 상속, 다형성, 캡슐화) 쉽게 말해, 공통되는 함수나 변수를 가지고 있으면 이를 상속받아 비슷하게 사용하고, 확장하거나 수정하는 기능이다. 부모 클래스의 동작을 다시 사용하거나 확장 / 수정하기 위해 자식 클래스를 정의한다. 상속되는 클래스를 기본 클래스 ( 부모 클래스 ) / 상속하는 클래스를 파생 클래스 ( 자식 클래스 ) 라고 한다. *하지만 static (정적 생성자: 클래스의 정적 데이터 초기화), 생성자(클래스의 이름과 같은 메소드, 클래스의 새 인스턴스 만들 때..

공부/C# 2023.03.22

[C#] string과 string의 내장 메소드에 대해 알아보자 (format, split, substring, compareTo, replace, length)

String 문자열에 대해 알아보자. string은 문자열 타입 / char는 문자, 즉 단일 문자 타입이다. 이를 다시 생각해보면 문자열 = 문자의 집합 = char의 집합 이 되는데 사실 이를 이용해 string에 내장된 builtin method를 직접 구현할 수도 있다. 코딩을 하다보면 자주 나오는 string의 method는 아래 5가지와 메소드는 아니지만 string 변수 Length까지 있다. 1. Format() - 형식을 정한다. 2. Split() - 문자열을 나눈다. 3. Substring() - 포함된 문자(char)를 뺀다. 4. compareTo() - 문자열의 비교, int를 return한다. 앞인지 뒤인지 판별해 자리 리턴 - 비교하는 문자가 같으면 0 리턴, 비교하는 문자가..

공부/C# 2023.03.21

[C#] 이차원 배열을 이용해 콘솔창에서 빙고를 실행시켜보자!

다음은 만들고자 하는 빙고판의 조건이다. 빙고 만들기 셔플 메소드 만들기 빙고 생성 메소드 만들기 컴퓨터 AI 만들기 각자 다른 빙고판 컴퓨터가 숫자 하나 플레이어가 숫자 하나 빙고 종료 조건 둘 중 4빙고가 되는 사람 있으면 해당 플레이어 승 게임 종료 메서드마다 풀이를 해두겠다. static int[,] Create_bingo() { int length = 5; int[,] arr = new int[length, length]; for (int i = 0; i < arr.GetLength(0); i++) { for (int j = 0; j < arr.GetLength(1); j++) { arr[i, j] = 5 * i + j + 1; //1~25 순서대로 [5][5]에 넣기 } } return arr..

[C#] 이차원 배열과 구조체, static과 트럼프 카드 출력 코드

2차원 배열 1차원으로 쭉 나열했던 배열을 2차원으로 개념을 넓혔다. 기존의 1차원 배열은 int[] arr = new int[n]; 식으로 선언했다면 int[,] arr = new int[i, j]; 식으로 콤마를 넣는게 두드러지는 특징이다. 또한 int[,] arr = new int [3, 2];로 작성한다면 가로가 3칸 세로가 2칸이 아니라 세로가 3칸 가로가 2칸이다. 따라서 아래 그림처럼 하려면 new int [2, 3]으로 해야한다. [] [] [] [] [] [] for (int i = 0; i < arr_2.GetLength(0); i++) { for (int j = 0; j < arr_2.GetLength(1); j++) { arr_2[i, j] = rnd.Next(0, 70); } } ..

공부/C# 2023.03.20

[C#] 배열, foreach, 셔플 코드와 이를 이용한 예제 및 로또 생성기

배열 - 동일한 특성을 가지며 일정한 규칙에 따라 n개의 요소가 나열된 데이터의 집합이다. - 배열의 번호(index)와 번호에 대응하는 데이터들로 이루어진 자료구조를 의미한다. - 다수의 데이터를 효율적으로 처리 가능. 배열 선언 형식) * 만약 동일한 타입을 가지는 데이터가 n개 만큼 있다면 type[] 배열이름 = new type[n]; 으로 선언해주면 된다. 배열 코드 예시 int[] numArr = new int[5]; numArr[0] = 10; numArr[1] = 30; numArr[2] = 40; numArr[3] = 100; numArr[4] = 200; Console.WriteLine(numArr[0]); Console.WriteLine(numArr[1]); Console.WriteL..

공부/C# 2023.03.17

[C#] for문과 break, continue의 사용, 열거형 상수 enum과 예제

for문 (반복문) - while처럼 조건식이 참인 동안 코드를 반복 실행한다. - 하지만 while보다 반복을 더 정교하게 제어할 수 있다. - while에 비하여 좀 더 많은 코드로 이루어져 있지만 임의의 횟수만큼 반복을 수행하기에는 for문이 더 편리하다. for문 형식) for (초기화식; 조건식; 반복식) {반복 실행할 코드} 초기화식: 반복을 실행하기 전, 가장 먼저 딱 한번만 실행된다. ㄴ for 반복문에서 사용할 변수 등을 이곳에서 초기화 한다. 조건식: 반복을 계속 수행할지 여부를 결정하는 식 ㄴ 이 조건의 결과가 false가 되면 반복을 중단한다. 반복식: 매 반복이 끝날 때마다 실행된다. ㄴ 주로 여기서 조건식에서 사용하는 변수의 값을 조정한다. 반복식이 실행된 후에는 조건식이 실행되..

공부/C# 2023.03.16

[C#] 콘솔창 글씨/배경 색 바꾸기, 실제 색상표, 출력 글자 수 빈칸으로 맞추기와 이것들을 활용한 콘솔 게임 예제

콘솔창 배경색, 글자색 바꾸기 Console.ForegroundColor = ConsoleColor.(색상명) 을 해주면 이후에 출력되는 모든 글자가 해당 색상으로 글씨색이 바뀐다. Console.BackgroundColor = ConsoleColor.(색상명) 을 해주면 글씨가 써있는 만큼의 배경 색이 색상으로 바뀐다. 글씨색과 배경색 둘 다 원래대로 바꿔주지 않으면 코드를 쓴 이후 모든 글씨에 적용되어 나온다. 이런식으로 따라서 원래대로 돌려주고 싶다면 Console.ResetColor(); 를 써주면 배경, 글씨 색 전부 원래대로 돌아온다. (색상명)은 공식 문서에 나온 대로 Black, Blue, Cyan, DarkBlue, DarkCyan, DarkGray, DarkGreen, DarkMagen..

공부/C# 2023.03.16
728x90
반응형