SlideShare a Scribd company logo
1 of 17
정보통신공학과 / 정명한
C# 세미나, 12회차
C# 6.0
- C# 6.0은 기존의 문법을 이용한 코딩에서 문자열
을
줄이는 방향으로 개편되었다.
- 낮은 프레임워크 버전에서도 이용가능하다.
C# 6.0 업데이트
3
01
자동 구현 속성을 사용할 경우 생성자 없이 초깃값을 부여할 수 있다.
Class Person
{
public string Name { get; set; } = “Jane”;
//생성자 생략
private string [ 식별자 ] = “Jane”;
public string Name
{
get { return [ 식별자 ]; }
set { [식별자] = value; }
}
}
자동 구현 속성의 초기화 구문
Set 과 같은 설정자를 생략하여 읽기 전용 속성으로 만드는 것도 가능하
다.
기존에 사용한 readonly 예약어 생략
4
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);
메서드, 속성 및 인덱서 정의
5
02
속성 정의에 람다 식을 사용하는 것도 가능하다!
당연하게도 set은 불가능, 외부 메서드를 수정한다는 것은 말이 안되죠
?
메서드, 속성 및 인덱서 정의
6
02
인덱서 구문에서의 람다식 정의도 가능
생성자의 경우는 메서드지만 람다 식을 이용할 수는 없다.
생성자를 대리자로 만든다는게…이상하죠?
메서드, 속성 및 인덱서 정의
7
03
예시로~!!!
Console.WriteLine 를 간략 해보겠습니다.
using System;
using static System.Console;
class Program
{
static void Main(string[] args)
{
WriteLine(“test”);
}
}
using static 구문을 이용한 타입명 생략
Using Namespace와 비슷한 기능!
8
03
마찬가지로 enum 과 const상수 멤버에 대해서도 타입명 생략가능
Enum이나 const 멤버는 컴파일하면 모두 static 유형으로 다뤄진다.
왜냐면 상수니까?? 알아서 정적으로 만들어준다.
using static 구문을 이용한 타입명 생략
9
03
확장 메서드의 경우는 using static 적용이 불가능!
확장 메서드는 인스턴스 메서드(객체 내부 메서드)로
호출되는데, 타입명을 명시하지 않으면
클래스 매서드(외부 객체 메서드)인지
인스턴스 메서드 인지 애매해진다.
using static 구문을 이용한 타입명 생략
10
04
참조 변수 값이 null이라면 그대로 null을 반환하고 null이 아닐경우 지정
된 멤버를 호출한다.
list != null ? new int?(list.Count) : null -> list?.Count
대폭생략!
null 조건 연산자
Null값 확인을 위한 조건문을 시행할 필요가 없다.
11
04
반드시 null값을 처리할 수 있는 타입을 사용해야한다.
null 조건 연산자
대신 ?? 연산자를 이용해 null을 값 형식으로 반환할 수 있다.
반환값이 없는 경우에도 사용가능
12
05
자주사용하는 string.Format 메서드를 축약
string.Format(“이름: {0}, 나이:{1}”, Name, Age);
아래 코드로 줄일 수 있다.
$”이름: {Name}, 나이: {Age}”;
문자열 내에 포함된 식
13
06
식별자 이름을 그대로 출력하고자 할때, 편리성을 주기위한 기능이다.
nameof 연산자
이 코드에서는 출력문의 name이 단지 문자열이기 때문에 오류가 발생하진 않는다
하지만, nameof를 사용하면 식별자로 사용할 수 있기 때문에, 식별자 이름과 다른지
알아낼 수 있다.
14
07
Dictionary의 장점을 더욱 살려 직관적인 초기화 구문을 지원한다.
기존에 있던 키 값과 동일한 키 값을 가진 초기화 구문은 덮어쓰기 한
다.
Dictionary 타입의 인덱스 초기화
이전 버전 6.0 버전
15
08
이전의 C#에서는 없었던 예외필터를 이용할 수 있게 되었다.
readAll Text에 지정한 파일이 없는 경우 FileNotFoundException 예외 핸들러
가 선택되어야하는데, 경로가 “temp”를 포함하는 경우에만 예외 처리를 한
다.
예외 필터
이미 많이 알려져있는 When구문.
16
09
예외 처리 블록 내에서 비동기 호출을 처리할 수 있게 되었다.
Catch/finally 블록 내애서 await사용
wait를 catch/fianlly
내에서 사용가능하다.
이 문서는 나눔글꼴로 작성되었습니다. 설치하기
감사합니다

More Related Content

What's hot

Haskell study 13
Haskell study 13Haskell study 13
Haskell study 13Nam Hyeonuk
 
Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Park Jonggun
 
안드로이드기초
안드로이드기초안드로이드기초
안드로이드기초hylo926
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130Yong Joon Moon
 
Haskell study 10
Haskell study 10Haskell study 10
Haskell study 10Nam Hyeonuk
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)익성 조
 
Python+numpy pandas 4편
Python+numpy pandas 4편Python+numpy pandas 4편
Python+numpy pandas 4편Yong Joon Moon
 
03. function in typescript
03. function in typescript03. function in typescript
03. function in typescriptHan JaeYeab
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304Yong Joon Moon
 
Python array.array 모듈 이해하기
Python array.array 모듈 이해하기Python array.array 모듈 이해하기
Python array.array 모듈 이해하기Yong Joon Moon
 
타임리프 폼과 어노테이션.Key
타임리프 폼과 어노테이션.Key타임리프 폼과 어노테이션.Key
타임리프 폼과 어노테이션.KeySeokju Hong
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitiveNAVER D2
 
파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229Yong Joon Moon
 
파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409Yong Joon Moon
 
[아꿈사] The C++ Programming Language 11장 연산자 오버로딩
[아꿈사] The C++ Programming Language 11장 연산자 오버로딩[아꿈사] The C++ Programming Language 11장 연산자 오버로딩
[아꿈사] The C++ Programming Language 11장 연산자 오버로딩해강
 
[C++]함수템플릿(Function template)
[C++]함수템플릿(Function template)[C++]함수템플릿(Function template)
[C++]함수템플릿(Function template)jusingame
 
Python+numpy pandas 1편
Python+numpy pandas 1편Python+numpy pandas 1편
Python+numpy pandas 1편Yong Joon Moon
 

What's hot (20)

Haskell study 13
Haskell study 13Haskell study 13
Haskell study 13
 
Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2
 
Haskell study 9
Haskell study 9Haskell study 9
Haskell study 9
 
Haskell study 6
Haskell study 6Haskell study 6
Haskell study 6
 
안드로이드기초
안드로이드기초안드로이드기초
안드로이드기초
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130
 
Haskell study 10
Haskell study 10Haskell study 10
Haskell study 10
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)
 
Python+numpy pandas 4편
Python+numpy pandas 4편Python+numpy pandas 4편
Python+numpy pandas 4편
 
03. function in typescript
03. function in typescript03. function in typescript
03. function in typescript
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304
 
Python array.array 모듈 이해하기
Python array.array 모듈 이해하기Python array.array 모듈 이해하기
Python array.array 모듈 이해하기
 
Haskell study 5
Haskell study 5Haskell study 5
Haskell study 5
 
타임리프 폼과 어노테이션.Key
타임리프 폼과 어노테이션.Key타임리프 폼과 어노테이션.Key
타임리프 폼과 어노테이션.Key
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
 
파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229
 
파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409
 
[아꿈사] The C++ Programming Language 11장 연산자 오버로딩
[아꿈사] The C++ Programming Language 11장 연산자 오버로딩[아꿈사] The C++ Programming Language 11장 연산자 오버로딩
[아꿈사] The C++ Programming Language 11장 연산자 오버로딩
 
[C++]함수템플릿(Function template)
[C++]함수템플릿(Function template)[C++]함수템플릿(Function template)
[C++]함수템플릿(Function template)
 
Python+numpy pandas 1편
Python+numpy pandas 1편Python+numpy pandas 1편
Python+numpy pandas 1편
 

Similar to C# 세미나 12회차

Data Structure 4
Data Structure 4Data Structure 4
Data Structure 4yonsei
 
이펙티브 C++ 789 공부
이펙티브 C++ 789 공부이펙티브 C++ 789 공부
이펙티브 C++ 789 공부quxn6
 
Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리ETRIBE_STG
 
2014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #72014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #7Chris Ohk
 
게임프로그래밍입문 7
게임프로그래밍입문 7게임프로그래밍입문 7
게임프로그래밍입문 7Yeonah Ki
 
2014-15 Intermediate C++ Study #6
2014-15 Intermediate C++ Study #62014-15 Intermediate C++ Study #6
2014-15 Intermediate C++ Study #6Chris Ohk
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디quxn6
 
Effective c++ Chapter1,2
Effective c++ Chapter1,2Effective c++ Chapter1,2
Effective c++ Chapter1,2문익 장
 
포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++KWANGIL KIM
 
08장 객체와 클래스 (기본)
08장 객체와 클래스 (기본)08장 객체와 클래스 (기본)
08장 객체와 클래스 (기본)유석 남
 
파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310Yong Joon Moon
 
Effective c++chapter4
Effective c++chapter4Effective c++chapter4
Effective c++chapter4성연 김
 
파이썬 모듈 패키지
파이썬 모듈 패키지파이썬 모듈 패키지
파이썬 모듈 패키지SeongHyun Ahn
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 Yong Joon Moon
 
C# 고급 문법 part 2
C# 고급 문법 part 2C# 고급 문법 part 2
C# 고급 문법 part 2준영 박
 
[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿AnselmKim
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)MIN SEOK KOO
 
스칼라 클래스 이해하기 _Scala class understanding
스칼라 클래스 이해하기 _Scala class understanding스칼라 클래스 이해하기 _Scala class understanding
스칼라 클래스 이해하기 _Scala class understandingYong Joon Moon
 

Similar to C# 세미나 12회차 (20)

Data Structure 4
Data Structure 4Data Structure 4
Data Structure 4
 
이펙티브 C++ 789 공부
이펙티브 C++ 789 공부이펙티브 C++ 789 공부
이펙티브 C++ 789 공부
 
Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리
 
2014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #72014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #7
 
게임프로그래밍입문 7
게임프로그래밍입문 7게임프로그래밍입문 7
게임프로그래밍입문 7
 
2014-15 Intermediate C++ Study #6
2014-15 Intermediate C++ Study #62014-15 Intermediate C++ Study #6
2014-15 Intermediate C++ Study #6
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디
 
Effective c++ Chapter1,2
Effective c++ Chapter1,2Effective c++ Chapter1,2
Effective c++ Chapter1,2
 
포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++
 
08장 객체와 클래스 (기본)
08장 객체와 클래스 (기본)08장 객체와 클래스 (기본)
08장 객체와 클래스 (기본)
 
파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310
 
Effective c++chapter4
Effective c++chapter4Effective c++chapter4
Effective c++chapter4
 
파이썬 모듈 패키지
파이썬 모듈 패키지파이썬 모듈 패키지
파이썬 모듈 패키지
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기
 
C# 고급 문법 part 2
C# 고급 문법 part 2C# 고급 문법 part 2
C# 고급 문법 part 2
 
[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
 
[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
 
스칼라 클래스 이해하기 _Scala class understanding
스칼라 클래스 이해하기 _Scala class understanding스칼라 클래스 이해하기 _Scala class understanding
스칼라 클래스 이해하기 _Scala class understanding
 
강의자료3
강의자료3강의자료3
강의자료3
 

C# 세미나 12회차

  • 1. 정보통신공학과 / 정명한 C# 세미나, 12회차 C# 6.0
  • 2. - C# 6.0은 기존의 문법을 이용한 코딩에서 문자열 을 줄이는 방향으로 개편되었다. - 낮은 프레임워크 버전에서도 이용가능하다. C# 6.0 업데이트
  • 3. 3 01 자동 구현 속성을 사용할 경우 생성자 없이 초깃값을 부여할 수 있다. Class Person { public string Name { get; set; } = “Jane”; //생성자 생략 private string [ 식별자 ] = “Jane”; public string Name { get { return [ 식별자 ]; } set { [식별자] = value; } } } 자동 구현 속성의 초기화 구문 Set 과 같은 설정자를 생략하여 읽기 전용 속성으로 만드는 것도 가능하 다. 기존에 사용한 readonly 예약어 생략
  • 4. 4 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); 메서드, 속성 및 인덱서 정의
  • 5. 5 02 속성 정의에 람다 식을 사용하는 것도 가능하다! 당연하게도 set은 불가능, 외부 메서드를 수정한다는 것은 말이 안되죠 ? 메서드, 속성 및 인덱서 정의
  • 6. 6 02 인덱서 구문에서의 람다식 정의도 가능 생성자의 경우는 메서드지만 람다 식을 이용할 수는 없다. 생성자를 대리자로 만든다는게…이상하죠? 메서드, 속성 및 인덱서 정의
  • 7. 7 03 예시로~!!! Console.WriteLine 를 간략 해보겠습니다. using System; using static System.Console; class Program { static void Main(string[] args) { WriteLine(“test”); } } using static 구문을 이용한 타입명 생략 Using Namespace와 비슷한 기능!
  • 8. 8 03 마찬가지로 enum 과 const상수 멤버에 대해서도 타입명 생략가능 Enum이나 const 멤버는 컴파일하면 모두 static 유형으로 다뤄진다. 왜냐면 상수니까?? 알아서 정적으로 만들어준다. using static 구문을 이용한 타입명 생략
  • 9. 9 03 확장 메서드의 경우는 using static 적용이 불가능! 확장 메서드는 인스턴스 메서드(객체 내부 메서드)로 호출되는데, 타입명을 명시하지 않으면 클래스 매서드(외부 객체 메서드)인지 인스턴스 메서드 인지 애매해진다. using static 구문을 이용한 타입명 생략
  • 10. 10 04 참조 변수 값이 null이라면 그대로 null을 반환하고 null이 아닐경우 지정 된 멤버를 호출한다. list != null ? new int?(list.Count) : null -> list?.Count 대폭생략! null 조건 연산자 Null값 확인을 위한 조건문을 시행할 필요가 없다.
  • 11. 11 04 반드시 null값을 처리할 수 있는 타입을 사용해야한다. null 조건 연산자 대신 ?? 연산자를 이용해 null을 값 형식으로 반환할 수 있다. 반환값이 없는 경우에도 사용가능
  • 12. 12 05 자주사용하는 string.Format 메서드를 축약 string.Format(“이름: {0}, 나이:{1}”, Name, Age); 아래 코드로 줄일 수 있다. $”이름: {Name}, 나이: {Age}”; 문자열 내에 포함된 식
  • 13. 13 06 식별자 이름을 그대로 출력하고자 할때, 편리성을 주기위한 기능이다. nameof 연산자 이 코드에서는 출력문의 name이 단지 문자열이기 때문에 오류가 발생하진 않는다 하지만, nameof를 사용하면 식별자로 사용할 수 있기 때문에, 식별자 이름과 다른지 알아낼 수 있다.
  • 14. 14 07 Dictionary의 장점을 더욱 살려 직관적인 초기화 구문을 지원한다. 기존에 있던 키 값과 동일한 키 값을 가진 초기화 구문은 덮어쓰기 한 다. Dictionary 타입의 인덱스 초기화 이전 버전 6.0 버전
  • 15. 15 08 이전의 C#에서는 없었던 예외필터를 이용할 수 있게 되었다. readAll Text에 지정한 파일이 없는 경우 FileNotFoundException 예외 핸들러 가 선택되어야하는데, 경로가 “temp”를 포함하는 경우에만 예외 처리를 한 다. 예외 필터 이미 많이 알려져있는 When구문.
  • 16. 16 09 예외 처리 블록 내에서 비동기 호출을 처리할 수 있게 되었다. Catch/finally 블록 내애서 await사용 wait를 catch/fianlly 내에서 사용가능하다.
  • 17. 이 문서는 나눔글꼴로 작성되었습니다. 설치하기 감사합니다