2009-11-06 5 views
1

Nave면 나도 용서해주십시오.다른 클래스의 속성에 사용 된 유형의 클래스에 속성 설정

하지만 클래스 SomeType에 속성을 설정하려고합니다.

public class SomeType<T> 
{ 
    private T _value; 

    public T Name 
    { 
     get; 
     set; 
    } 

    public T Value 
    { 
     get 
     { 
      return _value; 
     } 
     set 
     { 
      _value = value; 
     } 
    } 
} 

다른 하나;

private class Source 
{ 

    public SomeType<String> value1 
    { 
     get 
     { 
      return new SomeType<String>(); 
     } 

    } 

} 

테스트 방법에서 내가 시도하는 것은 간단합니다.

Source source = new Source(); 
source.value1.Value = "Test"; 

그러나 값은 절대로 "테스트"가 아닙니까? 내 개념이 빠졌습니까?

답변

3

당신은 value1 속성에 액세스 목적.

이 어떤 차이가 있는지 확인 :

private SomeType<string> _value1 = new SomeType<string>(); 
public SomeType<string> value1 
{ 
    get 
    { 
     return _value1; 
    } 
} 
+0

예! 젠장, 내 나쁜 :) –

3

value1 속성에 액세스 할 때마다 SomeType의 새 인스턴스가 반환됩니다. 값이 "테스트"인지 확인하면 완전히 새로운 개체에 대해 "테스트"인지 확인합니다. 올바르게 해당 객체에 Value 속성을 설정하고 있지만, 그것은 당신이 value1 액세스 다음에 당신은 완전히 새로운를 얻고있는 것을 의미한다, 그래서 당신은 새로운 SomeType<string> 개체마다 시간을 반환하고

0

이 Source.value1에서, 당신은 SomeType<string> 게터가 액세스 할 때마다 새로운 인스턴스를 생성하는 (안 좋은 코딩 관용구 자체). string의 기본값은 null이므로 값 속성의 값은 다른 것으로 설정되지 않았으므로이 값이 값입니다.

다른 말로하면. 이것은 예상된다.

어쩌면 당신이 달성하고자하는 것을 우리와 함께 나눌 수 있습니까?

0

값 1은 항상 새로운 SomeType을 반환합니다. 이것이 해답이 결코 "시험"이되지 않는 이유입니다. 아래 코드는 문제를 해결해야합니다.

private class Source 
{ 
    public SomeType<String> value1 
    { 
     get; 
     set; 
    } 
} 

source.value1 = new SomeType<string>() { Value = "Test" }; 
관련 문제