2014-05-13 4 views
-1
Dude car = new dude(name="honda", year=1998); 

Dude park = new Dude(name="blah", year=1996); 

car=park; 

OOP를 처음 사용하기 때문에 다른 값을 사용하더라도이 참조 변수가 서로 같게 설정되는 경우가 있습니다. 어쩌면 내가 뭔가를 오해하고있다. 왜 당신이 서로 같은 객체를 설정하는지 설명 할 수 있습니까?인스턴스화 개체 C#

+2

의사 코드 대신 실제 코드를 사용하면 도움이됩니다. 그리고 당신은 하나의 * 물체 *를 다른 물체와 동일하게 설정하지 않습니다; 하나의 변수의 값을 다른 변수의 값과 동일하게 설정합니다.이 값은 객체에 대한 참조가 아니라 객체 자체에 대한 것입니다 ('Dude'가 클래스라고 가정). –

+0

왜 변수를 다른 변수와 동일하게 설정합니까? 이것은 전혀 좋은 질문이 아닙니다. – ManyRootsofAllEvil

+0

프로그래밍은 당신에게 도움이되지 않을 수도 있습니다. =) J/K ... 당신이 응용 프로그램을 작성한 후에 질문에 대해 생각해 봐야 할 것 같아요. –

답변

5

저는 Dude이 구조체가 아니라고 가정합니다.

왜 개체를 서로 동일하게 설정하는지 설명 할 수 있습니까?

"서로 같은 객체"를 설정하지 않았습니다.

당신은 두 변수, carpark,객체 유형 Dude-가리키는 각 할 수 있습니다.

그런 다음 "honda"라는 새 Dude을 만들고 변수 car을 가리키게하십시오. park에 대해서도 비슷한 일을합니다.

car 변수가 park과 같은 개체를 가리키고 있습니다. 이제 "blah"라는 친구를 가리키는 두 개의 변수가 있고 "honda"라는 친구를 가리키는 변수가 없습니다.

0

"개체"와 "변수"를 구분합시다. 여기에 두 개의 개체Dude - 첫 번째 "혼다"및 1998, 두 번째 "blah"및 1996 초기화됩니다. 이들은 메모리에 할당 된 개체 및 모든 논리를 해당 클래스에 관련된 있습니다.

이제 두 개의 변수도 있습니다. 첫 번째 이름은 "car", 두 번째 "park". 처음에는 "혼다"객체를 가리키는 변수 "car"와 "blah"객체를 가리키는 변수 "park"가 있습니다.

세 번째 줄이 할당을 변경하므로 "자동차"와 "공원"이 모두 "ㅋ"개체를 가리키고 "혼다"개체를 가리키는 변수가 없습니다. 이제 car.name 또는 park.name에 액세스했는지 여부에 관계없이 동일한 개체에서 동일한 값을 가져옵니다. 참조되지 않은 객체는 결국 가비지 수집기에 의해 선택됩니다.

0

개체를 서로 동일하게 설정하지 않으면 하나를과 같게 설정하십시오. 대입 연산자 (=)는 왼쪽을 오른쪽으로 설정하고 그 라인보다 왼쪽에 있던 값을 잃어 버립니다.

0

과 같이 object을 가리키는 int 또는 class 개의 인스턴스와 같은 변수가 기본 유형일 수 있습니다. 많은 경우에 유용 할 수있는 변수의 값을 다른 변수에 할당 할 수 있습니다. 예를 들어 User이라는 class이 있는데이 필드에는 username 필드가 있습니다. 누군가 로그인 할 때 그는 username과 암호를 입력하고 User 개체의 상태를 수정하여 username이라는 string 필드 (object) 필드에 사용자가 입력 한 username을 보유하도록합니다.나중에 필드에 username 값이 입력되어 있기 때문에 objectusername을 가져올 수 있습니다.

0

당신은 아무것도에 가리키는 없기 때문에 car의 초기 값이 영원히 손실되고 그것이 당신의 기억을 취소 가비지 컬렉터에 의해 수집됩니다 car = park;을 쓸 때. 이제 두 변수는 을 가리키며 객체의 값이 park입니다. 왜 두 변수가 같은 객체를 가리 키기를 원하겠습니까? 예를 들어, 변수의 이름이 좋기 때문에 같은 변수에서 새 객체를 초기화하고 이전 객체를 유지하려고 할 수도 있습니다. 이 경우 new 객체를 만들기 전에 인스턴스를 가리키는 동일한 유형의 다른 객체가 필요합니다. 이렇게하면 객체에 대한 참조를 잃지 않고 영원히 손실되지 않습니다.