2010-03-29 7 views
3

구조체는 일반적으로 불변의 데이터, 예를 들어 돌연변이가없는 전화 번호와 같이 사용되지만 대신 새 번호를 얻습니다 (예 : 0001이되는 000은 두 개의 별도 번호).돌연변이가 있거나 새로운 인스턴스가 될 수있는 필드로 작업하기

그러나 Name과 같은 정보 조각은 mutate (abcdef의 이름을 abcdef로 변경하거나 def와 같은 새 이름 지정) 할 수 있습니다. 이와 같은 필드의 경우, 변경 가능한 클래스에 있어야하며 변경할 수없는 구조가 있어야한다고 가정합니다.

코드를 구조화하는 나의 방법은 Address와 같은 변경 불가능한 개념을 구조체에 넣은 다음 Customer와 같은 클래스에서 참조하는 것입니다. 고객은 항상 주소를 가지고 있기 때문입니다. 그래서 CompanyName 또는 Employer를 클래스에 넣을 수 있습니다. 그러나 이름은 돌연변이를 일으킬 수도 있고 동일한 1 인스턴스 또는 새 이름 설정 일 수도 있고 회사가 여전히 이름을 소유하고있는 동안에도 가능합니다.

는 (여전히 회사에 의해 소유 예를 들어, 새로운 회사 이름하지만 옛 이름) 새로운 인스턴스를 할당하기위한 올바른 패턴은?

string name = ""; 
string newName = new string(); 
newName = "new"; 
name = newName; 

그리고 돌연변이 단지 표준 할당 패턴겠습니까?

감사

+0

는 http://msdn.microsoft.com/en-us/library/362314fe.aspx : 그냥 그것이 있어야 문자열을 할당 객체가 생성 된 후에도 구문을 사용하면이 작업을 수행 할 수있는 것처럼 보입니다. " ...... 너의 정의가 섞여 있다고 생각해. – code4life

답변

0

나는이 수준에서 가변성/불변성에 대해 걱정하지 않을 것입니다. 간단하게 코드를 작성하십시오. 코드 샘플에 대한

한 가지 :

string newName = new string(); 
newName = "new"; 

두 개의 서로 다른 문자열 인스턴스를 생성합니다 위의 코드; 먼저 빈 문자열이 newName에 할당되고 새 문자열 ("new")이 할당됩니다. 빈 문자열 인스턴스의 할당은 사용되지 않았기 때문에 최적화되지 않을 가능성이 높습니다. "문자열은 불변 - - 문자열 객체의 내용을 변경할 수 없습니다

string name = "new"; 
관련 문제