[C#]TIL (22) | 2023.08.23

kjg5370·2023년 8월 23일
0

TIL

목록 보기
22/91
post-thumbnail

들어가기 앞서

오늘부로 개인과제가 마무리되었습니다. 생각보다 어려웠고
내가 지금 하고 있는 방식이 맞는지도 계속 의문이 들었습니다.
다른사람들이 한 것들을 보고 많이 배우겠습니다.

오늘 배운 것

델리게이트, 람다 및 LINQ

  • 델리게이트 ( Delegate ) : 메서드를 참조하는 타입
    함수 포인터와 유사한 역할을 하며, 메서드 호출을 다른 메서드로 전달하는 역할.
    콜백 함수, 이벤트 처리, 비동기 프로그래밍 등 다양한 시나리오에서 유용하게 활용.

    • 기본 구조

      delegate 반환타입 델리게이트이름(매개변수타입 매개변수);

    • 사용 예제
      delegate int MathOperation(int a, int b);
      
      class Program
      {
          static int Add(int a, int b)
          {
              return a + b;
          }
      
          static int Subtract(int a, int b)
          {
              return a - b;
          }
      
          static void Main(string[] args)
          {
              MathOperation operation;
      
              operation = Add;
              Console.WriteLine("Addition: " + operation(5, 3));
      
              operation = Subtract;
              Console.WriteLine("Subtraction: " + operation(5, 3));
          }
      }
  • 람다 ( Lambda ) : 간단한 익명 함수를 생성하기 위한 표현식
    주로 델리게이트나 함수형 인터페이스와 함께 사용되며, 코드를 더 간결하고 가독성 있게 작성할 수 있는 강력한 기능.

    • 기본 구조

      (parameter_list) => expression_or_statement_block

      • parameter_list는 람다 함수의 매개변수 목록.
      • expression_or_statement_block은 람다 함수가 수행할 코드 블록이나 표현식.
    • 사용 예제

class Program
{
    delegate int MathOperation(int a, int b);

   static void Main(string[] args)
    {
        MathOperation add = (x, y) => x + y;
        MathOperation subtract = (x, y) => x - y;

Console.WriteLine("Addition: " + add(5, 3));
        Console.WriteLine("Subtraction: " + subtract(5, 3));
    }
}
  • Func과 Action : 델리게이트를 대체하는 미리 정의된 제네릭 형식
    델리게이트의 특정한 종류로, 다른 매개변수 및 반환 값 타입의 델리게이트를 선언하는데 사용.

    • Func : 반환 값을 가지는 메서드 또는 함수를 참조하는 델리게이트
      제네릭 형태로 정의되어 있으며, 제네릭 매개변수를 사용하여 매개변수 타입과 반환 타입을 지정할 수 있음.
      마지막 제네릭 매개변수는 반환 타입을 나타냄.

      • 형식

        Func<매개변수1타입, 매개변수2타입, ..., 반환타입> 함수이름;

      • 사용 예제

        Func<int, int, int> addFunc = (x, y) => x + y;
        int result = addFunc(3, 5); // result = 8

        => 두 개의 정수를 받아서 정수를 반환하는 메서드를 참조하는 Func.
    • Action : 반환 값이 없는 메서드나 함수를 참조하는 델리게이트
      Func과 유사하지만, 마지막 제네릭 매개변수가 반환 타입이 아니라 void로 고정.

      • 형식

        Action<매개변수1타입, 매개변수2타입, ...> 함수이름;

      • 사용 예제

        Action<int, int> printAction = (x, y) => Console.WriteLine($"Sum: {x + y}");
        printAction(3, 5); // 출력: Sum: 8

        => 두 개의 정수를 받아서 출력하는 메서드를 참조하는 Action.
  • LINQ (Language Integrated Query) : .NET 언어 패밀리에서 데이터를 쿼리하고 조작하기 위한 통합된 쿼리 언어와 문법을 제공하는 기술.컬렉션, 데이터베이스, XML 문서 등 다양한 데이터 소스에 대해 일관된 방식으로 쿼리를 작성하고 실행할 수 있도록 도와줌.

    • 구조

      var result = from 변수 in 데이터소스
      [where 조건식]orderby 정렬식 [, 정렬식...]]
      [select 식];

      • var 키워드 : 결과 값의 자료형을 자동으로 추론.
      • from 절 : 데이터 소스를 지정.
      • where 조건식 : 필터링을 위한 선택적인 부분으로, 데이터 소스 내에서 원하는 조건을 지정.
      • orderby 정렬식 : 선택적으로 사용하며, 데이터를 정렬하기 위해 사용.
      • select 식: 원하는 데이터를 선택하고 반환하는 데 사용.
    • 종류
    1. LINQ to Objects: C# 컬렉션과 같은 인메모리 데이터를 쿼리하는데 사용.
      IEnumerable를 활용하여 컬렉션을 쿼리할 수 있음.

    2. LINQ to SQL: 데이터베이스를 대상으로 하는 SQL 기반 쿼리 기술.
      데이터베이스와 .NET 객체 간의 매핑을 통해 데이터를 쿼리하고 조작할 수 있음.

    3. LINQ to XML: XML 문서를 대상으로 하는 쿼리 기술.
      XML 데이터를 직접 쿼리하여 원하는 정보를 추출하거나 수정할 수 있음.

    4. LINQ to Entities: Entity Framework를 통해 데이터베이스에 대한 쿼리 및 ORM(Object-Relational Mapping)을 지원.

    5. LINQ to DataSet: ADO.NET DataSet을 대상으로 하는 쿼리 기능을 제공.

    • 사용 예제
        // 데이터 소스 정의 (컬렉션)
      List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
      
      // 쿼리 작성 (선언적인 구문)
      var evenNumbers = from num in numbers
                        where num % 2 == 0
                        select num;
      
      // 쿼리 실행 및 결과 처리
      foreach (var num in evenNumbers)
      {
          Console.WriteLine(num);
      }

현재 진행 사항

  • 체크리스트
    • 개발 환경 설정
    • 기본 코드 구조
    • 변수와 자료형
    • 연산자 문자열 처리
    • 조건문과 반복문
    • 배열과 컬렉션
    • 매서드와 구조체
    • 클래스와 객체
    • 상속과 다형성
    • 고급 문법 및 기능
    • 인터페이스와 열거형
    • 예외 처리 및 값형과 참조형
    • 델리게이트, 람다 및 LINQ -> 여기까지 정리중
    • 고급 자료형 및 기능
    • 알고리즘 기초
    • 정렬 알고리즘
    • 탐색 알고리즘
    • 고급 알고리즘
    • 문제해결 전략과 실전 연습 -> 현재 여기까지 강의 수강

내일 할 일

  • 하루 계획
    • 오전
      • 09:00 ~ 09:30 : 팀원 간 인사 및 하루 계획 작성
      • 09:30 ~ 14:00 : 개인과제 회고
      • 12시-1시: 점심식사
    • 집중 코딩
      • 14:00 ~ 18:00 : 개인과제 회고
    • 저녁
      • 6시-7시: 저녁식사
      • 19:00 ~ 20:00 : 지급 받은 강의 복습
      • 20:00 ~ 20:30 : 6조 회의
      • 20:30 ~ 21:00 : TIL,마무리 회고 진행
profile
학생입니다

0개의 댓글