2017.08.30

닷넷 C# 8부터 '널러블 레퍼런스 타입' 지원한다

Paul Krill | InfoWorld
마이크로소프트 C# 언어가 8버전부터 널러블(nullable) 레퍼런스 타입을 지원한다. 코드 품질이 더 높아질 것으로 보인다.

닷넷의 일부인 C# 언어 개발을 주도하는 닷넷 파운데이션의 프로그래밍 언어 개발 계획에 따르면, 이 기능은 넌널러블(non-nullable)이라고 불리는 기존 타입에 새로운 세이프 레퍼런스 타입으로 추가된다. 널러블 타입이 디레퍼런스되거나 혹은 널이 값을 가지게 되면 컴파일러가 사용자에게 넌널러블 변수 타입을 설정하라고 경고창을 보여주게 된다.

널러블 레퍼런스 타입은 개발자가 널 레퍼런스 예외를 막도록 도와준다. 이 기능의 핵심은 널이 돼야 하는 것을 명확하게 표현하는 것이다. 널이 아닌 것에 널을 부여할 경우 컴파일러가 널로 선언되지 않았다고 사용자에게 알려준다. 이 기능을 이용하면 개발자가 버그를 찾아 수정하는 작업이 더 쉬워진다.

이 밖에 C# 8에 추가될 예정인 기능은 다음과 같다.

- 작동 중단을 다루는 옵트인 방식
- 기본 인터페이스 프로그래밍 기능: 가상 확장 메소드로 발전할 가능성 있음. API 개발자는 차기 버전부터 소스 수정이나 바이너리 호환성에 관계없이 메소드를 인터페이스에 추가할 수 있음. 이미 자바에서는 지원하는 기능임.
- IEnumerable의 비동기 버전에 대한 추상화를 제공하는 비동기 스트림 기능: 넌지네릭 컬렉션(nongeneric collections)용 기본 인터페이스로 수치화할 수 있음.
- 새로운 확장 멤버를 정의하는 방법: C#에서 메소드 정의를 정의하기 위해 이미 적용된 기능으로 인스턴스 메소드로 작동하지만, C# 8에서는 인스턴스 멤버를 지원하는 등 기능이 더 강화됨.

한편 마이크로소프트는 C# 8의 발표 일정에 대해 언급을 거부했다. ciokr@idg.co.kr 



2017.08.30

닷넷 C# 8부터 '널러블 레퍼런스 타입' 지원한다

Paul Krill | InfoWorld
마이크로소프트 C# 언어가 8버전부터 널러블(nullable) 레퍼런스 타입을 지원한다. 코드 품질이 더 높아질 것으로 보인다.

닷넷의 일부인 C# 언어 개발을 주도하는 닷넷 파운데이션의 프로그래밍 언어 개발 계획에 따르면, 이 기능은 넌널러블(non-nullable)이라고 불리는 기존 타입에 새로운 세이프 레퍼런스 타입으로 추가된다. 널러블 타입이 디레퍼런스되거나 혹은 널이 값을 가지게 되면 컴파일러가 사용자에게 넌널러블 변수 타입을 설정하라고 경고창을 보여주게 된다.

널러블 레퍼런스 타입은 개발자가 널 레퍼런스 예외를 막도록 도와준다. 이 기능의 핵심은 널이 돼야 하는 것을 명확하게 표현하는 것이다. 널이 아닌 것에 널을 부여할 경우 컴파일러가 널로 선언되지 않았다고 사용자에게 알려준다. 이 기능을 이용하면 개발자가 버그를 찾아 수정하는 작업이 더 쉬워진다.

이 밖에 C# 8에 추가될 예정인 기능은 다음과 같다.

- 작동 중단을 다루는 옵트인 방식
- 기본 인터페이스 프로그래밍 기능: 가상 확장 메소드로 발전할 가능성 있음. API 개발자는 차기 버전부터 소스 수정이나 바이너리 호환성에 관계없이 메소드를 인터페이스에 추가할 수 있음. 이미 자바에서는 지원하는 기능임.
- IEnumerable의 비동기 버전에 대한 추상화를 제공하는 비동기 스트림 기능: 넌지네릭 컬렉션(nongeneric collections)용 기본 인터페이스로 수치화할 수 있음.
- 새로운 확장 멤버를 정의하는 방법: C#에서 메소드 정의를 정의하기 위해 이미 적용된 기능으로 인스턴스 메소드로 작동하지만, C# 8에서는 인스턴스 멤버를 지원하는 등 기능이 더 강화됨.

한편 마이크로소프트는 C# 8의 발표 일정에 대해 언급을 거부했다. ciokr@idg.co.kr 

X