Dude car = new dude(name="honda", year=1998);
Dude park = new Dude(name="blah", year=1996);
car=park;
OOP를 처음 사용하기 때문에 다른 값을 사용하더라도이 참조 변수가 서로 같게 설정되는 경우가 있습니다. 어쩌면 내가 뭔가를 오해하고있다. 왜 당신이 서로 같은 객체를 설정하는지 설명 할 수 있습니까?인스턴스화 개체 C#
Dude car = new dude(name="honda", year=1998);
Dude park = new Dude(name="blah", year=1996);
car=park;
OOP를 처음 사용하기 때문에 다른 값을 사용하더라도이 참조 변수가 서로 같게 설정되는 경우가 있습니다. 어쩌면 내가 뭔가를 오해하고있다. 왜 당신이 서로 같은 객체를 설정하는지 설명 할 수 있습니까?인스턴스화 개체 C#
저는 Dude
이 구조체가 아니라고 가정합니다.
왜 개체를 서로 동일하게 설정하는지 설명 할 수 있습니까?
"서로 같은 객체"를 설정하지 않았습니다.
당신은 두 변수, car
및 park
,객체 유형 Dude
의-가리키는 각 할 수 있습니다.
그런 다음 "honda"라는 새 Dude
을 만들고 변수 car
을 가리키게하십시오. park
에 대해서도 비슷한 일을합니다.
car
변수가 park
과 같은 개체를 가리키고 있습니다. 이제 "blah"라는 친구를 가리키는 두 개의 변수가 있고 "honda"라는 친구를 가리키는 변수가 없습니다.
"개체"와 "변수"를 구분합시다. 여기에 두 개의 개체Dude
- 첫 번째 "혼다"및 1998, 두 번째 "blah"및 1996 초기화됩니다. 이들은 메모리에 할당 된 개체 및 모든 논리를 해당 클래스에 관련된 있습니다.
이제 두 개의 변수도 있습니다. 첫 번째 이름은 "car", 두 번째 "park". 처음에는 "혼다"객체를 가리키는 변수 "car"와 "blah"객체를 가리키는 변수 "park"가 있습니다.
세 번째 줄이 할당을 변경하므로 "자동차"와 "공원"이 모두 "ㅋ"개체를 가리키고 "혼다"개체를 가리키는 변수가 없습니다. 이제 car.name
또는 park.name
에 액세스했는지 여부에 관계없이 동일한 개체에서 동일한 값을 가져옵니다. 참조되지 않은 객체는 결국 가비지 수집기에 의해 선택됩니다.
개체를 서로 동일하게 설정하지 않으면 하나를과 같게 설정하십시오. 대입 연산자 (=
)는 왼쪽을 오른쪽으로 설정하고 그 라인보다 왼쪽에 있던 값을 잃어 버립니다.
과 같이 object
을 가리키는 int
또는 class
개의 인스턴스와 같은 변수가 기본 유형일 수 있습니다. 많은 경우에 유용 할 수있는 변수의 값을 다른 변수에 할당 할 수 있습니다. 예를 들어 User
이라는 class
이 있는데이 필드에는 username
필드가 있습니다. 누군가 로그인 할 때 그는 username
과 암호를 입력하고 User
개체의 상태를 수정하여 username
이라는 string
필드 (object
) 필드에 사용자가 입력 한 username
을 보유하도록합니다.나중에 필드에 username
값이 입력되어 있기 때문에 object
의 username
을 가져올 수 있습니다.
당신은 아무것도에 가리키는 없기 때문에 car
의 초기 값이 영원히 손실되고 그것이 당신의 기억을 취소 가비지 컬렉터에 의해 수집됩니다 car = park;
을 쓸 때. 이제 두 변수는 이을 가리키며 객체의 값이 park
입니다. 왜 두 변수가 같은 객체를 가리 키기를 원하겠습니까? 예를 들어, 변수의 이름이 좋기 때문에 같은 변수에서 새 객체를 초기화하고 이전 객체를 유지하려고 할 수도 있습니다. 이 경우 new
객체를 만들기 전에 인스턴스를 가리키는 동일한 유형의 다른 객체가 필요합니다. 이렇게하면 객체에 대한 참조를 잃지 않고 영원히 손실되지 않습니다.
의사 코드 대신 실제 코드를 사용하면 도움이됩니다. 그리고 당신은 하나의 * 물체 *를 다른 물체와 동일하게 설정하지 않습니다; 하나의 변수의 값을 다른 변수의 값과 동일하게 설정합니다.이 값은 객체에 대한 참조가 아니라 객체 자체에 대한 것입니다 ('Dude'가 클래스라고 가정). –
왜 변수를 다른 변수와 동일하게 설정합니까? 이것은 전혀 좋은 질문이 아닙니다. – ManyRootsofAllEvil
프로그래밍은 당신에게 도움이되지 않을 수도 있습니다. =) J/K ... 당신이 응용 프로그램을 작성한 후에 질문에 대해 생각해 봐야 할 것 같아요. –