2009-04-27 9 views
2

구조체 (하나는 변경 가능한 구조체)에 대해 여기에 여러 스레드를 읽고 구조체에 ID가없는 방법에 대해 계속 읽습니다.구조체에 ID가없는 것은 무엇을 의미합니까?

구조체에 ID가 정확히없는 것은 무엇입니까? 나는 그것이 숫자와 같을 것이라고 추측한다. 5, 컨텍스트가 없습니다 (5 무엇?). 반면 클라이언트는 서비스를 기대하는 사람이되며 따라서 신원이 있습니다. 내가 정확하게 생각하고 있니?

기술적 차이점과 구조체가 스레드로부터 안전한지는 잘 알고 있지만 (변형 될 수는 없지만 상태를 변경하는 메서드를 작성할 수 있음) 메소드에 전달할 때마다 새로운 복사본이 있습니다. ...

+0

구조체/ID에 대해 말하는 스레드를 인용 할 때주의해야합니까? –

+0

예. http://stackoverflow.com/questions/608542/immutability-of-structs는 내가 말하는 스레드입니다. – dotnetdev

답변

9

구조체에 대한 유일한 데이터는 값이라는 점입니다. 하나의 "5"와 다른 "5"사이에는 차이가 없습니다. 클래스와 비교해 : 그들은 모두 같은 데이터가 포함되어 있지만

Person person1 = new Person("Jon"); 
Person person2 = new Person("Jon"); 
Person person3 = person2; 

이제 person1person2는, 다른 오브젝트에 대한 참조를 가지고있다. person2person3은 모두 과 동일한 개체를 나타냅니다. 구조체에서는 이러한 구별이 존재하지 않습니다.

2

구조체는 값 형식이므로 값만 나타냅니다. ID는 클래스에 대한 참조를 만드는 데 유용 할 뿐이므로 클래스가되는 것이 더 좋습니다.

0

Evans' book에 의해 영향을받는 것 같아요. 여기서 엔티티와 값 객체를 구분합니다.

+0

나는 그 책을 읽은 적이 없지만 도움이 될 것이라고 생각합니다! :) – dotnetdev

관련 문제