2017-12-11 2 views
-2

집합 메서드에서 여러 값을 설정할 수 있습니까? set 대신 {..}을 사용할 수 있습니다 후 =>에 대한 필요가 없습니다속성의 표현식 본 설정 메서드에서 여러 값

public int ID { get; set => {Property = value, ID=value}; } 
+1

물론 그렇게 할 수는 있지만, 적어도 적절히 문서화하면 안됩니다. 부작용은 기본적으로 나쁜 것입니다. 실제로 프로퍼티는 일반적인 get-set 메소드와 get-set 메소드입니다. 당신은 정상적인 방법으로 할 수있는 모든 것을 할 수 있습니다. – HimBromBeere

+2

예, 가능합니다. 너 해봤 니? 어떻게 된 거예요? [ask]를 읽으십시오. – CodeCaster

+0

구문 오류가 발생합니다. 나는 그것이 권장되지 않거나 좋은 프로그램 스타일링 (가능하다면 궁금해하고 있었다)이라는 것을 안다. – Wouter

답변

1

Expression-bodied setters 당신이 필요하므로, 하나 이상의 작업을 할 수있는 표현력이 없습니다 전체 메서드 본문의 구문을 사용합니다

private Foo foo; 
public Foo Foo 
{ 
    get { return foo; } 
    set 
    { 
     foo = value; 
     OtherProperty = value.SomethingElse; 
    } 
} 

그것은 일부 작업은 자신의 특성상 부작용이 있기 때문에, 어떤 경우에는이 작업을 수행하는 것이 합리적이다. 예를 들어 개체의 표준 시간대 속성을 설정하는 경우 기본 DateTime을 변경하여 DateTimeKindDateTimeKind.Local인지 확인합니다. 그렇지 않으면 객체의 DateTime 속성이 불완전하거나 잘못되었습니다.

즉, 어디서나이 작업을 수행하면 코드 남용이 코드 냄새이므로 디자인을 다시 생각해 볼 수 있습니다.

0

:

는 나는 다음과 같은 일을하고 싶다. 그것은 것 , 읽기 전용 속성이 값을 설정 할 수있다, 여기

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

에 대한 값을 설정하면 자동으로 할당
+3

아무도 그런 수업을 찾고 있지 않아야한다. 'foo.Poperty = 1; foo.ID = 2;'이제 foo.Property'가 2가됩니다. 두통의 요리법. – oerkelens

+0

@oerkelens : 요점을 알려줘서 고마워, 'Property'는 읽기 전용이어야하며 대답을 업데이트했습니다. –