본문 바로가기

개인공부/C#

(29)
[C#] LINQ ■ LINQ(Language INtegrated Query) - SQL문법처럼 C#에서 사용할 수 있는 질의(Query) 기능 - 질의(Query)는 데이터 집합에서 원하는 정보를 찾는 작업 - 질의 구성 요소 · From : 데이터 집합 · Where : 조건 · Select : 항목 ■ LINQ 사용 ■ Example using System; using System.Collections.Generic; using System.Linq; namespace LinqExample { class Program { static void Main(string[] args) { List list = new List() { 100, 200, 300, 400, 500 }; var result = from num in..
[C#] Func, Action 대리자 ■ Func 대리자, Action 대리자: - .NET 라이브러리에서 제공하는 사전에 정의된 대리자 - 일반화(Generalization)와 최대 16개 매개변수 지원 - Func 대리자 : 반환 값이 있는 대리자 - Action 대리자 : 반환 값이 없는 대리자 ■ Func 대리자 ■ Example using System; namespace LambdaExample { class Program { static void Main(string[] args) { Func func1 = () => 100; Console.WriteLine($"func1() 반환값 : {func1()}"); Func func2 = (x) => x + 100; Console.WriteLine($"func2(100) 반환값 : {f..
[C#] 람다식(Lambda Expression) ■ 람다식(Lambda Expression): - 람다식(Lambda Expression)은 익명 메서드(Anonymouse Method)를 만들기 위해 사용 - 람다식으로 만든 익명 메서드를 무명 함수(Anonymouse Function)라 부름 - 입력 연산자 => 를 사용하여 선언 - 선언하는 형식에 따라 식 형식 람다, 문 형식 람다가 있음 - C# 컴파일러는 대리자(Delegate)를 통해서 무명 함수(Anonymouse Function)의 형식을 유추(Type Inference) ■ Example using System; namespace LambdaExample { class Program { delegate int Calculate(int a, int b); // 식 형식 delegate ..
[C#] 대리자(Delegate), 이벤트(Event) 차이점 ■ 대리자(Delegate), 이벤트(Event) 차이점 - 대리자(Delegate)는 public 혹은 internal인 경우 클래스 외부에서 호출이 가능 - 이벤트(Event)는 public이라도 클래스 외부에서 호출 불가 - 대리자(Delegate)는 콜백 역할 - 이벤트(Event)는 상태 변화 혹은 사건의 알림 역할 ■ Example using System; namespace EventExample { public delegate void EventHandler(string msg); class TestEvent { public event EventHandler SomethingHappend; public void Run(int num) { if(num%2 == 0) SomethingHappen..
[C#] 이벤트(Event) ■ 이벤트(Event) : - 클래스(Class) 내부에서 어떤 일(Event)이 생겼을 때 외부에 알리는 기능 - 이벤트의 가입자(subscriber)에게만 알림 - event 키워드로 선언 - 이벤트 추가 : += 연산자 - 이벤트 제거 : -= 연산자 - EventHanlder 사용 방법 (전달할 값이 없는 형태) ■ Example using System; namespace EventExample { class TestEvent { public event EventHandler SomethingHappend; public void Run() { SomethingHappend += DoSomethingEvent; SomethingHappend += DoSomethingEvent02; Something..
[C#] 대리자(Delegate) ■ 대리자(Delegate) : - 메서드(Method)를 대신 실행하는 객체로 실행할 메서드는 컴파일 시점이 아닌 실행 시점에 결정 - delegate 키워드로 선언 - 메서드(Method)처럼 매개변수와 반환 형식을 가짐 - delegate에 Method를 참조할 때는 반환 형식과 매개변수 구조가 같아야 한다 ■ Example using System; namespace DelegateExample { class Program { delegate void MyDelegate(int num); static void Method_A(int a) { Console.WriteLine($"[Method_A] a = {a}"); } static void Method_B(int b) { Console.WriteLi..
[C#] 예외(Exception) ■ 예외(Exception) : 예외(Exception)란 프로그램의 실행 흐름을 벗어난 것으로 적절한 예외 처리(Exception Handling)를 하지 않으면 예외(Exception)에 의해서 오류(Error)가 발생 혹은 프로그램의 강제 중단이 발생하게 됩니다. ■ try ~ catch : - 예외 처리(Exception Handling)를 할 수 있게 해주는 문법 - try : · 정상적으로 실행될 코드 · 예외가 발생될 가능성이 있는 코드 - catch : · 예외 발생 시 처리할 코드 · try에서 발생한 예외를 받아 처리하는 코드 · catch문은 여러 개 사용 가능하며 예외 종류를 구분하여 처리할 수 있습니다. ■ finally : - 예외 처리(Exception Handling) 후 마..
[C#] 일반화(Generalization) ■ 일반화(Generalization) : 특수한 개념으로부터 공통된 개념을 찾아 묶는 것 ■ 일반화 프로그래밍(Generic Programming) : - 데이터 형식(Data Type) 일반화를 이용한 프로그래밍 - 한 가지 코드로 다양한 데이터 형식(Data Type) 활용 ■ 일반화 메서드(Generic Method) : - 데이터 형식(Data Type)을 일반화한 메서드 - 형식 매개변수 를 사용하여 작성 ■ 일반화 클래스(Generic Class) : - 데이터 형식(Data Type)을 일반화한 클래스 ■ 형식 매개 변수 제약 : - 특정 조건을 갖추도록 제한하는 기능 제약 설명 where T : struct T는 값 형식 where T : class T는 참조 형식 where T :..