c# 세미나 12회차

17
정정정정정정정 / 정정정 C# 정정정 , 12 정정 C# 6.0

Upload: jeungmh

Post on 14-Apr-2017

26 views

Category:

Education


0 download

TRANSCRIPT

Page 1: C# 세미나 12회차

정보통신공학과 / 정명한

C# 세미나 , 12 회차 C# 6.0

Page 2: C# 세미나 12회차

- C# 6.0 은 기존의 문법을 이용한 코딩에서 문자열을줄이는 방향으로 개편되었다 .

- 낮은 프레임워크 버전에서도 이용가능하다 .

C# 6.0 업데이트

Page 3: C# 세미나 12회차

01

자동 구현 속성을 사용할 경우 생성자 없이 초깃값을 부여할 수 있다 .

Class Person{

public string Name { get; set; } = “Jane”;

// 생성자 생략private string [ 식별자 ] = “Jane”;public string Name{

get { return [ 식별자 ]; }set { [ 식별자 ] = value; }

}}

자동 구현 속성의 초기화 구문

Set 과 같은 설정자를 생략하여 읽기 전용 속성으로 만드는 것도 가능하다 .기존에 사용한 readonly 예약어 생략

Page 4: C# 세미나 12회차

02

람다식을 이용하여 메서드를 정의할 수 있다 .

public class Vector {

double x;double y;0.

Public Vector(double x, double y){this.x = x;this.y = y;}

public Vector Move(double dx, double dy) => new Vector(x + dx, y +dy);

public void PrintIt() => Console.WriteLine(this);

public override string ToString() => string.Format(“x = {0}, y = {1}”, x, y);

메서드 , 속성 및 인덱서 정의

Page 5: C# 세미나 12회차

02

속성 정의에 람다 식을 사용하는 것도 가능하다 !

당연하게도 set 은 불가능 , 외부 메서드를 수정한다는 것은 말이 안되죠 ?

메서드 , 속성 및 인덱서 정의

Page 6: C# 세미나 12회차

02

인덱서 구문에서의 람다식 정의도 가능

생성자의 경우는 메서드지만 람다 식을 이용할 수는 없다 .생성자를 대리자로 만든다는게…이상하죠 ?

메서드 , 속성 및 인덱서 정의

Page 7: C# 세미나 12회차

03

예시로 ~!!!

Console.WriteLine 를 간략 해보겠습니다 .

using System;using static System.Console;

class Program{

static void Main(string[] args){

WriteLine(“test”);}

}

using static 구문을 이용한 타입명 생략

Using Namespace 와 비슷한 기능 !

Page 8: C# 세미나 12회차

03

마찬가지로 enum 과 const 상수 멤버에 대해서도 타입명 생략가능Enum 이나 const 멤버는 컴파일하면 모두 static 유형으로 다뤄진다 .

왜냐면 상수니까 ?? 알아서 정적으로 만들어준다 .

using static 구문을 이용한 타입명 생략

Page 9: C# 세미나 12회차

03

확장 메서드의 경우는 using static 적용이 불가능 !

확장 메서드는 인스턴스 메서드 ( 객체 내부 메서드 ) 로 호출되는데 , 타입명을 명시하지 않으면클래스 매서드 ( 외부 객체 메서드 ) 인지인스턴스 메서드 인지 애매해진다 .

using static 구문을 이용한 타입명 생략

Page 10: C# 세미나 12회차

04

참조 변수 값이 null 이라면 그대로 null 을 반환하고 null 이 아닐경우 지정된 멤버를 호출한다 .

list != null ? new int?(list.Count) : null -> list?.Count대폭생략 !

null 조건 연산자Null 값 확인을 위한 조건문을 시행할 필요가 없다 .

Page 11: C# 세미나 12회차

04

반드시 null 값을 처리할 수 있는 타입을 사용해야한다 .

null 조건 연산자대신 ?? 연산자를 이용해 null 을 값 형식으로 반환할 수 있다 .

반환값이 없는 경우에도 사용가능

Page 12: C# 세미나 12회차

05

자주사용하는 string.Format 메서드를 축약string.Format(“ 이름 : {0}, 나이 :{1}”, Name, Age);아래 코드로 줄일 수 있다 .$” 이름 : {Name}, 나이 : {Age}”;

문자열 내에 포함된 식

Page 13: C# 세미나 12회차

06

식별자 이름을 그대로 출력하고자 할때 , 편리성을 주기위한 기능이다 .

nameof 연산자

이 코드에서는 출력문의 name 이 단지 문자열이기 때문에 오류가 발생하진 않는다

하지만 , nameof 를 사용하면 식별자로 사용할 수 있기 때문에 , 식별자 이름과 다른지알아낼 수 있다 .

Page 14: C# 세미나 12회차

07

Dictionary 의 장점을 더욱 살려 직관적인 초기화 구문을 지원한다 .

기존에 있던 키 값과 동일한 키 값을 가진 초기화 구문은 덮어쓰기 한다 .

Dictionary 타입의 인덱스 초기화

이전 버전 6.0 버전

Page 15: C# 세미나 12회차

08

이전의 C# 에서는 없었던 예외필터를 이용할 수 있게 되었다 .

readAll Text 에 지정한 파일이 없는 경우 FileNotFoundException 예외 핸들러가 선택되어야하는데 , 경로가 “ temp” 를 포함하는 경우에만 예외 처리를 한다 .

예외 필터이미 많이 알려져있는 When 구문 .

Page 16: C# 세미나 12회차

09

예외 처리 블록 내에서 비동기 호출을 처리할 수 있게 되었다 .

Catch/finally 블록 내애서 await사용

wait 를 catch/fianlly내에서 사용가능하다 .

Page 17: C# 세미나 12회차

이 문서는 나눔글꼴로 작성되었습니다 . 설치하기

감사합니다