예를 들어서
어떤 리스트랑 변화시킬 변수를 만듦
int currentInt = 0;
List<int> intHistory = new List<int>();
그 리스트에 어떤 변수를 넣을 건데, 변수의 값은 계속 바뀌고 그걸 리스트에 기록을 남기는 식으로 추가함
void Record(){
intHistory.Add(currentInt);
}
이런 식으로 하고 있는데, Record() 함수를 호출하면 리스트 안에 있는 변수는 커지는데, 모든 값이 새로 등록하는 변수 값으로 저장됨 ㅠㅠㅠ
그러니까 예를 들어서,
currentInt = 1;
Record();
currentInt = 2;
Record();
currentInt = 3;
record();
이렇게 하고 나면 리스트 안에 3이 세 개 들어있음 ㅠㅠㅠ
진짜 왜 이러는 건지 계속 보면서 생각하고 있는데 해결이 안됨 ㅠㅠㅠㅠ 도와줘요 행님들....
제가 애초에 단순화시킨답시고 여기 올린 코드 자체가 잘못되어있었네요 저대로 하면 제가 언급한 문제가 발생 안하는 것 같습니다 ㅠㅠ 죄송합니다
동일한 변수를 세번 담은 거잖아여...
흠 그러면 그때그때의 currentInt의 값만을 따로 떼서 리스트에 넣고 싶으면 어떻게 해야 하죠 ㅠㅠ
기록하고 있는게 혹시 struct가 아니라 class임?
ㅇㅇㅇ... 사실 아직 공부 미진이라 그 두개의 차이를 정확히 모르긴 하는데... ㅠㅠㅠㅠ 정확히는 int를 기록하고 있는 게 아니라, 몇개의 변수가 있는 Class임
기록하고 싶은 데이터들을 따로 struct로 묶어서 저장하셈 그리고 call by value & call by reference 키워드로 검색해서 관련자료 공부 ㄱㄱ
오 감사합니다 행님 ㅠ
예시에 거짓말을 넣었네...
거짓말은 아니고 단순화하기 위해서... ㅠ 클래스 스크립트까지 여기다 적으면 너무 복잡해 보일까봐 ㅠㅠ ㅈㅅㅈㅅ
일단 처음에 내가 댓쓴거 잘못된거고, int은 primitive 니깐 그냥 그대로 값복사가 들어가서 위 내용대로라면 1 2 3으로 떠야 함.
흠... 그러면 코드의 다른 곳에서 문제가 발생했다는 건데 ㅠㅠ 코드를 여기에 다 올릴 수도 없고 흠 어떻게 질문해야할까
다만 클래스 형태로 묶은거라면 참조형태로 들어간거라서 실제 들어간건 데이터 그 자체가 아니라 데이터를 가리키는 주소가 들어갔다고 보면 됨. 그러니 동일한 값을 넣은 것. 만약 클래스의 값을 복사 할거면 Clone 같은 함수를 만들어야 하고, 아니면 그냥 해당 클래스 자체를 새로 할당해서(New) 넣어줘.
흠 근데 넣을 때 new TestClass(var1,var2...) 를 Add했는데.... 음음 왜그럴까ㅠ 내가 공부가 많이 모자란건 확실히 맞는 것 같아 형 ㅠㅠㅠ
님이 뭐 했다는거에 신뢰가 안감 -_-;; 나도 무의식적으로 댓글 달아놓고 이게 말이 안되는데 하고 직접 코드까지 쳐봤는데 -_-;; 그냥 공부한다 생각하고 삽질하세요.
음 죄송합니다 ㅠㅠ 좀 더 공부해서 다시 올게요 ㅠㅠ
ㅋㅋ 뭐가 문제인지도 모르면서 정보은닉하고 답찾아달라는거봐
죄송합니다 ㅠㅠ 그렇다고 모든 코드를 다 올릴 수는 없을 것 같아서 일단 문제가 되는 부분만 추려서 올린답시고 올렸는데 생각해보니 제가 뭘 모르는지도 모르면서 자기 멋대로 코드 바꿔서 올리는게 조금 멍청하고 무례했을 수도 있겠네요 ㅠㅠ 죄송합니다...
왜 계속 되야하는데 안되지라고 생각했는데 잘못된 정보였네
죄송합니다 ㅠㅠ 글 수정하겠습니다 혼란을 빚게 해서 죄송합니다