본문 바로가기

분류 전체보기

(61)
[C#] Delegate(대리자) 메서드를 대신 호출해준다고 해서 대리자 라고도 부르며 인스턴스가 아닌 형식(Type) 이다. 따라서 사용할때 인스턴스를 생성해서 사용해야 한다. Delegate 를 사용하면 한번의 이벤트에 여러 메서드를 동시에 호출 할 수 있고, 메서드를 다른 메서드에 변수처럼 전달 가능하다. 이벤트 처리, 비동기 프로세스 처리 등을 보다 간편하게 하기 위해 사용된다. ✨ 정의하는 방법은 delegate 키워드를 사용하고, 대리자가 참조할 메서드를 생성한 후 new 키워드로 delegate 객체를 생성한다. (참조할 메서드의 형태는 대리자와 동일 해야 한다.) // Mydelegate 라는 대리자 선언 public delegate void MyDelegate(string msg); public staitc void Me..
[C#] 메서드 파라미터 ( ref, out ) 메서드에 파라미터를 전달할때 사용되는 키워드로, 메서드 호출 시에 인수를 전달하는 방식을 나타낸다. 1. ref : 변수를 전달하고, 해당 변수를 읽고 쓸 수 잇는 양방향 전달이 가능하다. 메서드 내에서 전달된 변수를 수정하면 호출자에게 반영된다. ref 가 사용되는 인수는 반드시 초기화된 변수를 전달해야 한다. class Program { static void ModifyValue(ref int x) { x = x * 2; } static void Main() { int number = 5; ModifyValue(ref number); Console.WriteLine(number); // 출력: 10 } } 2. out : 메서드에서 여러 값을 반환하는 용도로 사용된다. out 이 사용되는 인수는 초기..
[C#] Nullable 타입 ( ?, ?? ) T 는 기본 값 형식( int,double 등 ) 을 나타낸다 Int? 는 Nullable 와 동일하다. 레퍼런스 타입은(class) Nullable 을 쓸 필요가 없는데, 그것은 모든 레퍼런스 타입은 이미 Null 을 허용하기 때문이다. Null 상태를 체크할 수 있는 기능 HasValue 을 가지고 있다. Nullable 상태체크 예제 namespace Nullable { internal class Program { static void Main(string[] args) { // 일반적인 값 형식 변수 // int regularInt = 10; // Nullable 값 형식 변수 int? nullableInt = null; // 값 형식에 null 을 할당할 수 없음 //int invalidInt ..
[C#] 네임스페이스 네임스페이스는 클래스 코드를 조직화하고 이름 충돌을 방지하기 위해 사용되는 개념이다. 네임 스페이스는 클래스, 인터페이스, 델리게이트, 열거형 등의 유형을 포함할 수 있다. 네임스페이스 > Class 1. 클래스 명 앞에 네임스페이스 전부를 적는 경우 static void Main(string[] args) { System.Console.WriteLine(); } 2. 프로그램 맨 윗단에 **using** 을 사용하여 파일에서 사용하고자 하는 네임스페이스를 한번 설정해 주고, 이후 해당 파일 내에서 네임스페이스 없이 직접 클래스를 사용하는 경우 using System; //System 네임스페이스 지정 static void Main(string[] args) { Console.WriteLine(); }
[C#] 예외처리(Exception) [ try, catch, finally ] 예외(Exception) 은 프로그램 실행 중에 발생하는 예상치 못한 문제를 나타낸다. 예외 처리는 try, catch, finally 블록을 사용하여 구현된다. 여러 catch 를 사용하는 이유는 각 Exception 유형에 따라 서로 다른 에러 핸들링을 하기 위함이다. 예시코드 1. [ 숫자를 나누는 프로그램에서 예외를 처리하는 방법 ] using System; class Program { static void Main() { try { DivideNumbers(10, 0); } catch (DivideByZeroException ex) { Console.WriteLine($"예외 발생: {ex.Message}"); } finally { Console.WriteLine("Finally 블록 - 항상 ..
[C#] yield 키워드 : 큰 데이터의 집합을 다룰 수 있다 **yield** 키워드는 메서드를 일시 중단하고, 호출자(caller)에게 컬렉션 데이터를 하나씩 리턴 할 때 사용한다. Enumerator 라고 불리는 이러한 기능은 집합적인(Enum) 데이터셋으로 부터 데이터를 하나씩 호출자에게 보내주는 역할을 한다. 이를 통해 메모리를 효율적으로 사용하면서 큰 데이터 집합을 다룰 수 있다. yield 키워드를 사용하는 메서드는 반드시 반환 형식이 **IEnumerble** 또는 IEnumerble 이어야 한다. 매서드 내에서 yield return 을 사용하여 값을 생성하고 호출자에게 반환한다. using System; using System.Collections.Generic; class Program { static void Main() { foreach (v..
[C#] 반복문(Loop) 1. for 반복문: for 반복문은 초기화, 조건식, 증감식을 사용하여 반복 횟수를 제어하는 데 주로 사용됩니다. for (int i = 0; i < 5; i++) { Console.WriteLine(i); } 위의 코드에서 int i = 0는 초기화 부분으로, 반복문이 시작할 때 한 번만 실행됩니다. i < 5는 조건식으로, 조건이 참인 동안 반복이 계속됩니다. i++는 증감식으로, 각 반복이 끝날 때마다 i의 값을 1씩 증가시킵니다. for each : 배열, 리스트 등 각 요소를 반복적으로 처리할 때 사용한다. foreach 반복문은 컬렉션(배열, 리스트 등)의 각 요소를 반복적으로 처리할 때 사용됩니다. 이 반복문은 컬렉션의 모든 요소를 순서대로 가져와서 블록 내의 코드를 실행합니다. int[]..
[C#] 조건문(Conditional Statement) 1. if 문 : int number = -5; if (number > 0) { Console.WriteLine("양수입니다."); } else if (number < 0) { Console.WriteLine("음수입니다."); } 2. Switch 문: 주로 여러 가능한 값 중 하나를 선택해야 하는 상황에서 사용된다. 각 경우는 **case** 로 정의되며, 변수의 값과 일치하는 경우 해당 **case** 블록이 실행된다. 조건이 해당하는 경우 **break** 문을 통해 빠져나오게 된다. int dayOfWeek = 3; switch (dayOfWeek) { case 1: Console.WriteLine("월요일"); break; case 2: Console.WriteLine("화요일"); break..