C#에서 이러한 기능을 사용하고 있습니까? | DENNIS | dateo

  • [ ] 기본 인터페이스 구현
  • [ ] 고급 패턴 일치 및 스위치 표현식
  • [ ] 비동기 해제
  • [ ] 인덱스와 범위
  • [ ] new()에서 타입 생략
  • [ ] 전역 및 암시적 Using
  • [ ] 파일 범위 네임스페이스

5개의 좋아요

좋은 내용이네요! :heart_eyes:

  • 인덱스와 범위

이 기능은 IDE에서도 변경을 지원해주더라고요
예를들어 uri[uri.Length - 1] == '/' 이런 코드는 uri[^1] == '/' 이렇게 변경하라고 하더라고요.
도대체 ^1이건 어디서 나왔나 하고 조사를 해봤었는데 ㅋㅋ 이제보니 범위까지 지정이 가능하군요!
자주 써보면서 익숙해지면 편할 것 같네요 :+1:

MSDN에 자세한 사항이 있네요. 링크 첨부합니다! 인덱스 및 범위를 사용하여 데이터 범위 탐색 - C# | Microsoft Learn

  • 기본 인터페이스 구현

이 기능에 대해서 써보신 분 계신가요?

인터페이스의 기본 구현을 인터페이스를 정의할 때 같이 구현하는 걸로 보이는데
오히려 읽기 어려운 코드를 만드는거 아닌가 싶기도하고요…?? 음… :thinking:

4개의 좋아요

기본 인터페이스 구현은 인터페이스를 확장할 때 의미가 있습니다. 인터페이스를 확장하면서도 그 인터페이스를 구현한 구현체를 변경하지 않도록 하는 일종의 호환성을 위한 것입니다.

그러므로 일반적으로는 쓸 일은 거의 없다고 봐야겠어요.

3개의 좋아요

v 고급 패턴 일치 및 스위치 표현식
v new()에서 타입 생략
v 전역 및 암시적 Using
v 파일범위 네임스페이스

이렇게 많이 쓰고 있습니다. :smile:

기존 switch 자체가 못생기진 않았지만 익숙해지니 switch 쓰는 재미가 쏠쏠합니다.
(모든 상황을 다 대체할 순 없지만)

Content = value.PageId switch
{
    Pages.CameraDocument => new FrameworkHome(),
    Pages.Git => new DevStorageMain(),
    Pages.FileTree => new ReflectorMain(),
    _ => new NotFoundPage(),
};

그리고 new() 타입 생략은 이제 모든 영역에서 쓰고 있고 엄청 만족스럽습니다.

public RelayCommand<string> ClickCommand { get; init; }
...
ClickCommand = new(Click);

using과 namespace도 계속 익숙해지니 괄호 계층 하나 더 없애는 것이 생각보다 깔끔해서 좋네요.
(일괄로 바꾸면 좋습니다.)

2개의 좋아요