몇 주 전에 저는 C#6의 몇 가지 새로운 기능에 대해 여러 곳에서 읽었습니다. 아직 읽지 않으신 분들도 한 번에 보실 수 있도록 모두 모아두기로 했습니다. 그 중 일부는 예상만큼 마법적이지 않을 수도 있지만 현재로서는 업데이트일 뿐입니다.
VS2014를 다운로드하거나 여기에서 Visual studio2013용 Roslyn 패키지를 설치하여 얻을 수 있습니다.
한 번 살펴보겠습니다:
1. $ 식별자
$의 역할은 문자열 인덱싱을 단순화하는 것입니다. 이는 내부적으로 정규식 일치를 사용하는 C#의 인덱싱의 동적 특성과 다릅니다. 예시는 다음과 같습니다.
var col = new Dictionary<string, string>() { $first = "Hassan" }; //Assign value to member //the old way: col.$first = "Hassan"; //the new way: col["first"] = "Hassan";
2. 예외 필터
VB 컴파일러에서는 이미 예외 필터를 지원했고, 이제는 C#에서도 지원합니다. 예외 필터를 사용하면 개발자는 특정 조건에 대한 catch 블록을 만들 수 있습니다. catch 블록의 코드는 조건이 충족될 때만 실행됩니다. 이는 제가 가장 좋아하는 기능 중 하나입니다. 예는 다음과 같습니다.
try { throw new Exception("Me"); } catch (Exception ex) if (ex.Message == "You")
3. catch 및 finally 블록의 키워드 🎜>
내가 아는 한 C# 5의 catch 및 finally 코드 블록에서 wait 키워드를 사용할 수 없는 이유를 아는 사람은 아무도 없습니다. 어떻게 작성하든 사용할 수 없습니다. 개발자는 종종 I/O 작업 로그를 보고 싶어하며 캡처된 예외 정보를 로그에 기록하려면 이 작업을 비동기적으로 수행해야 하기 때문에 이는 좋습니다.try { DoSomething(); } catch (Exception) { await LogService.LogAsync(ex); }
long id; if (!long.TryParse(Request.QureyString["Id"], out id)) { }
if (!long.TryParse(Request.QureyString["Id"], out long id)) { }
using System.Console; namespace ConsoleApplication10 { class Program { static void Main(string[] args) { //Use writeLine method of Console class //Without specifying the class name WriteLine("Hellow World"); } } }
public class Person { // You can use this feature on both //getter only and setter / getter only properties public string FirstName { get; set; } = "Hassan"; public string LastName { get; } = "Hashemi"; }
//this is the primary constructor: class Person(string firstName, string lastName) { public string FirstName { get; set; } = firstName; public string LastName { get; } = lastName; }