_Parameters라는 해시 테이블에 대한 getter 함수가있는 클래스가 있습니다.이 해시 테이블을 읽기 전용으로 설정하면 안됩니까?
private Hashtable _Parameters = new Hashtable();
public Hashtable Parameters { get { return _Parameters; } }
_Parameters는 코드의 다른 곳에서 참조되지 않습니다. 이제 setter 함수가 없으므로이 클래스 외부의 어떤 것도 _Parameters가 저장 한 것을 수정할 수 없다고 생각합니다. 단지 읽어야 만합니다. 그러나 그것은 사실이 아닙니다. 다른 클래스는이 코드를 호출합니다 (템플릿은 위에서 언급 한 클래스의 인스턴스입니다).
template.Parameters[key] = parameters[key];
이렇게하면 _Parameters가 수정됩니다. 이것이 어떻게 가능한지? setter 함수는 vales에 '='를 할당 할 때만 적용됩니까?
의미가 있습니다. 감사합니다. 해시 테이블을 ReadOnlyDictionary로 변경할 수는 있지만 내 코드는 아닙니다.나는 단지 그것을 더 잘 이해하려고 노력하고있다. :) – CountMurphy
@Claus : 설명 만하면된다. 수정 될 수있는 참조를 반환하고있다. 그러나 참조 자체를 재정의 할 수는 없습니다. *. 좀 더 정확히 말하자면, 객체 인스턴스에 대한 참조를 리턴하고 외부에서 참조 변수의 * 사본 *을 보게되므로 내부 변수가 참조하는 객체를 변경할 수 없습니다. –