식 본문 멤버로 C# 단순화
구문을 단순화할 수 있습니다
C#은 구문을 단순화하고 코드를 보다 표현적으로 만드는 방식으로 지속적으로 발전하기 때문에 환상적인 언어입니다. Expression-bodied 멤버는 C# 6에서 릴리스되었으며 C# 7에서 더욱 향상되었습니다. 당시 저는 아직 주니어 개발자였으며 C#과 .NET이 저의 장기적인 초점이 될 것이라고 아직 결정하지 못했습니다.
이 기능이 나와 .NET의 "거래를 봉인"했다고 말하지는 않겠지만 다른 언어를 사용할 때 가장 그리워하는 기능입니다.
단순 식 본문 멤버
가장 간단한 형식은 기존 읽기 전용 속성을 가져와 압축하는 것입니다.
public int MyProperty
{
get
{
return _myField;
}
}
다음과 같이 됩니다.
public int MyProperty => _myField;
간단한 메서드 본문에도 사용할 수 있습니다.
public decimal CalculateTax(decimal rate) => _totalPrice * rate;
시간을 절약하고 화면의 공간을 절약합니다. 대부분의 C# 스타일 규칙은 여는 대괄호
{
와 닫는 대괄호}
가 새 줄에 속한다고 말합니다(일부 예외 있음). 스타일 가이드와 논쟁을 벌일 수 있지만 더 큰 팀에서는 아마도 지는 전투일 것입니다. 이 기능은 대괄호를 완전히 생략하여 이 문제를 해결합니다.표현 본문 회원은 상용구를 줄이는 데 도움이 될 수 있습니다.
아직 감동하지 않았습니까? 전체 속성에 식 본문 멤버를 사용할 수 있다고 말하면 어떻게 될까요?
private int _myField;
public int MyProperty
{
get => _myField;
set => _myField = value;
}
꽤 훌륭하지만 getter/setter를 호출할 논리가 없으면 솔직히 인상적이지 않습니다.
private int _myField;
private void SetField(ref int field, int value, [CallerMemberName]string memberName = "")
{
field = value;
Console.WriteLine($"{memberName} was set to {value}.");
}
public int MyProperty
{
get => _myField;
set => SetField(ref _myField, value);
}
// Output for "MyProperty = 5"
// MyProperty was set to 5.
표현식 본문 멤버는 생성자에서 사용할 수 있습니다.
C#에서 얻을 수 있는 가장 반복적인 상용구는 생성자에서 클래스 필드를 설정하는 것입니다.
public class Cake
{
private readonly IFrosting _frosting;
public Cake(IFrosting frosting) => _frosting = frosting;
}
이것은 단일 할당 생성자를 크게 단순화합니다. 그러나 한 번에 여러 할당을 수행하기 위해 이것을 튜플 구문과 결합할 수도 있습니다.
public class Cake
{
private readonly ISprinkles _sprinkles;
private readonly IFrosting _frosting;
public Cake(ISprinkles sprinkles, IFrosting frosting)
=> (_sprinkles, _frosting) = (sprinkles, frosting);
}
이 구문은 튜플에 나타나는 순서대로 필드를 할당합니다.
참고: 매개변수가 모두 유사한 유형(예:
string
)인 경우 이 구문을 사용하면 잘못된 순서로 매개변수를 쉽게 얻을 수 있습니다. 그러나 다른 유형의 필드는 컴파일에 의해 포착됩니다. 따라서 다양한 필드 집합을 할당할 때만 권장합니다.내가 C#에서 가장 좋아하는 기능 중 하나에 대한 이 간략한 개요를 즐겼기를 바랍니다!
Reference
이 문제에 관하여(식 본문 멤버로 C# 단순화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/quillcodes/simplify-c-with-expression-bodied-members-2n5l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)