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 |