집 >백엔드 개발 >C#.Net 튜토리얼 >C#의 향후 계획
NDC London에서 Mads Torgersen은 C# 언어의 미래에 대한 계획을 제안했습니다. 이는 단지 계획일 뿐이며 어떤 버전이 출시될지는 보장할 수 없다는 점에 유의해야 합니다. Damien Guard는 이러한 권장 사항을 요약하고 간략하게 분석하며 여기에서 그 중 일부를 선택했습니다.
읽기 전용 속성
읽기 전용 자동 속성을 사용하면 개발자가 한 줄의 코드로 속성과 해당 배경 필드를 선언할 수 있습니다.
public int X { get; } = x;
문을 사용하는 정적 유형
Visual Basic과 Java 모두 네임스페이스에서 모듈(C# 정적 클래스)을 가져올 수 있습니다. 이렇게 하면 "Math"와 같이 일반적으로 사용되는 정적 함수 앞에 반복되는 코드가 제거됩니다.
기본 생성자
클래스 이름 뒤에 매개변수를 추가하면 개발자가 더 이상 명시적으로 생성자를 생성할 필요가 없습니다. 이렇게 하면 생성자 인수를 비공개 필드에 복사할 때 자세한 코드가 제거됩니다.
public class Point(int x, int y) { private int x, y; }
속성 및 메서드 표현식
속성 표현식을 사용하면 간단한 읽기 전용 속성에 필요한 일부 상용구 코드를 제거할 수 있습니다.
public double Distance => Math.Sqrt((X * X) + (Y * Y));
메소드 표현식도 마찬가지입니다. 물론 매개변수를 사용할 수 있습니다. 매개변수화된 속성은 아직 고려되지 않습니다. 앞으로도 오랫동안 이는 VB의 고유한 기능이 될 것입니다.
함수 매개변수
오늘날 대부분의 개발자는 params 키워드를 사용하지 않는 한 배열을 사용하지 않습니다. 따라서 일부 사람들은 params가 IEnumerable 인터페이스도 지원한다고 제안했습니다. 이렇게 하려면 다른 언어(예: Visual Basic)도 지원해야 합니다. out 키워드를 사용하여 지역 변수를 선언할 수도 있다고 제안되었습니다. 예를 들어
int.TryParse("123", out int x);
Null 전파
지저분한 데이터를 처리할 때 개발자는 속성을 읽거나 메서드를 호출하기 전에 일련의 Null 판단 논리를 작성해야 하는 경우가 많습니다. ?. 구문은 이 논리를 제거하는 데 도움이 되며, 이전 값이 비어 있지 않은 경우에만 다음 메서드가 호출됩니다.
var bestValue = points?.FirstOrDefault()?.X;
이 예에서 points가 비어 있거나 points.FirstOrDefault()가 비어 있는 것을 반환하는 경우 .X가 무시되고 비어 있는 것이 반환됩니다. 선택적 기본값을 제공하기 위해 ??와 함께 사용할 수도 있습니다.
var bestValue = points?.FirstOrDefault()?.X ?? -1;
Objective-C 및 Smalltalk와 같은 "메시징" 언어에는 모두 이러한 구문이 포함되어 있습니다. null 참조 예외가 발생해야 하는 곳에서는 자동으로 무시되기 때문에 종종 문제가 있는 것으로 간주됩니다.