갓똥
나는야 프로그래머
갓똥
전체 방문자
오늘
어제
  • 분류 전체보기 (186)
    • 프로그래밍 (146)
      • 자바 (9)
      • 안드로이드 (2)
      • 유니티 (20)
      • C++ (38)
      • C# (56)
      • HTML (2)
      • 파이썬 (3)
      • 자료구조 (2)
      • 알고리즘 (0)
      • 문제풀이 (4)
      • 디자인 패턴 (7)
      • 카카오톡 봇 (1)
      • 엑셀 (1)
      • 기타 (1)
    • 게임 (21)
      • 테일즈위버 (0)
      • 카이로소프트 (1)
      • 순위 (19)
      • 기타 (1)
    • 일상 (13)
      • 카페 (1)
      • 방탈출 (12)
    • 기타 (6)
      • 웃긴자료 (5)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • C++
  • 모바일 게임 순위
  • 알고리즘
  • C++ 상속
  • Unity Graph
  • C# boxing
  • 전세계 게임 매출
  • 롤 골드그래프
  • c# delegate
  • 게임 매출 순위
  • 자바
  • 유니티 골드그래프
  • 게임 디자인 패턴
  • pc 게임 순위
  • 유니티 그래프 그리기
  • pc게임 순위
  • 유니티 그래프
  • c# coroutine
  • c# collection
  • 글로벌게임매출
  • 2020년 게임 매출
  • c# 코루틴
  • 전세계게임매출순위
  • c# Thread
  • 강남 방탈출
  • C# 예외 처리
  • c# unboxing
  • C++ 소멸자
  • 게임매출순위
  • C++ virtual

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
갓똥

나는야 프로그래머

[C#] Extension Method
프로그래밍/C#

[C#] Extension Method

2020. 3. 9. 17:07
728x90
반응형

1. 식-본문 메소드

using System;

class Program {
    public static int Square(int a) {
        return a * a;
    }
    
    public static void Main() {
        Console.WriteLine(Square(3));
    }
}

 

 ① 식 본문 메소드 (expression - bodied method)

using System;

class Program {
    /*
    public static int Square(int a) {
        return a * a;
    }
    */
    
    public static int Square(int a) => a * a;
    
    public static void Main() {
        Console.WriteLine(Square(3));
    }
}

    => 메소드의 구현이 단순한 경우 블록을 생략하고 => 뒤에 반환 값을 표기하는 표기법

    => 동일한 방식으로 식-본문 속성(expression-bodied property)도 만들 수 있다.

 


2. 확장 메소드

using System;

class Car {
    private int speed;
    public void Go() { Console.WriteLine("Go"); }
}

class Program {
    public static void Main() {
        Car c = new Car();
        c.Go();
        // c.Stop();
    }
}

 

위와 같은 코드가 있다고 해보자.
Car라는 클래스는 Go라는 메소드를 가지고 있는데
시간이 지나 Stop이라는 메소드도 필요해졌다고 해보자.
만약 Car가 고치기 힘든 클래스이거나 라이브러리라면 난감한 상황인데 이럴 때 메소드를 더해줄 수 있다.

 ① 확장 메소드

    => 기존 클래스를 수정하지 않고 새로운 메소드를 추가하는 문법

    => static class 의 static method 로 제공

using System;

class Car {
    private int speed;
    public void Go() { Console.WriteLine("Go"); }
}

static class CarExtension {
    public static void Stop(this Car c) {
        Console.WriteLine("Stop");
    }
}

class Program {
    public static void Main() {
        Car c = new Car();
        c.Go();
        c.Stop();
    }
}

 ② 확장 메소드 장점

    => 기존 코드는 수정하지 않고 새로운 기능을 추가할 수 있다.

    => Linq 가 extension method를 사용해서 기능을 제공

728x90
반응형

'프로그래밍 > C#' 카테고리의 다른 글

[C#] 속성 (Property) (2)  (0) 2020.03.13
[C#] 속성 (property) (1)  (0) 2020.03.12
[C#] Named, Optional Parameter  (0) 2020.02.28
[C#] 가변 길이 매개 변수 (params)  (0) 2020.02.26
[C#] 인자 전달 방식 (2)  (0) 2020.02.17
    '프로그래밍/C#' 카테고리의 다른 글
    • [C#] 속성 (Property) (2)
    • [C#] 속성 (property) (1)
    • [C#] Named, Optional Parameter
    • [C#] 가변 길이 매개 변수 (params)
    갓똥
    갓똥
    공부하며 알아가는 내용을 정리해 봅니다.

    티스토리툴바