집합 메서드에서 여러 값을 설정할 수 있습니까? set
대신 {..}
을 사용할 수 있습니다 후 =>
에 대한 필요가 없습니다속성의 표현식 본 설정 메서드에서 여러 값
public int ID { get; set => {Property = value, ID=value}; }
집합 메서드에서 여러 값을 설정할 수 있습니까? set
대신 {..}
을 사용할 수 있습니다 후 =>
에 대한 필요가 없습니다속성의 표현식 본 설정 메서드에서 여러 값
public int ID { get; set => {Property = value, ID=value}; }
Expression-bodied setters 당신이 필요하므로, 하나 이상의 작업을 할 수있는 표현력이 없습니다 전체 메서드 본문의 구문을 사용합니다
private Foo foo;
public Foo Foo
{
get { return foo; }
set
{
foo = value;
OtherProperty = value.SomethingElse;
}
}
그것은 일부 작업은 자신의 특성상 부작용이 있기 때문에, 어떤 경우에는이 작업을 수행하는 것이 합리적이다. 예를 들어 개체의 표준 시간대 속성을 설정하는 경우 기본 DateTime
을 변경하여 DateTimeKind
이 DateTimeKind.Local
인지 확인합니다. 그렇지 않으면 객체의 DateTime
속성이 불완전하거나 잘못되었습니다.
즉, 어디서나이 작업을 수행하면 코드 남용이 코드 냄새이므로 디자인을 다시 생각해 볼 수 있습니다.
:
는 나는 다음과 같은 일을하고 싶다. 그것은 것 , 읽기 전용 속성이 값을 설정 할 수있다, 여기
class Sample
{
private int _Property;
private int _ID;
public int Property
{
get { return _Property; }
}
public int ID
{
get { return _ID; }
set
{
_ID = value;
_Property = value;
}
}
}
이 작업을 보여줍니다
Example입니다
다음에 대한 값을 설정하면 자동으로 할당
Property
: 나는이 같은 클래스를 찾고 있습니다 생각 당신이ID
아무도 그런 수업을 찾고 있지 않아야한다. 'foo.Poperty = 1; foo.ID = 2;'이제 foo.Property'가 2가됩니다. 두통의 요리법. – oerkelens
@oerkelens : 요점을 알려줘서 고마워, 'Property'는 읽기 전용이어야하며 대답을 업데이트했습니다. –
물론 그렇게 할 수는 있지만, 적어도 적절히 문서화하면 안됩니다. 부작용은 기본적으로 나쁜 것입니다. 실제로 프로퍼티는 일반적인 get-set 메소드와 get-set 메소드입니다. 당신은 정상적인 방법으로 할 수있는 모든 것을 할 수 있습니다. – HimBromBeere
예, 가능합니다. 너 해봤 니? 어떻게 된 거예요? [ask]를 읽으십시오. – CodeCaster
구문 오류가 발생합니다. 나는 그것이 권장되지 않거나 좋은 프로그램 스타일링 (가능하다면 궁금해하고 있었다)이라는 것을 안다. – Wouter