내일배움캠프

내일배움캠프 Unity - TIL : 25.02.03

달시_Dalsi 2025. 2. 3. 20:26
728x90

 

오늘 학습한 내용

1) 문자열 다듬기 (Trim() 활용)

  • Trim()을 사용하여 문자열의 앞뒤 공백을 제거하는 방법을 학습하였습니다.
  • TrimStart(), TrimEnd()를 활용하여 특정 방향의 공백만 제거할 수 있는 기능 또한 확인하였습니다.

2) 얕은 복사 (MemberwiseClone())

  • MemberwiseClone()을 사용하면 객체의 얕은 복사가 이루어진다는 점을 학습하였습니다.
  • 깊은 복사가 필요한 경우 별도의 후처리가 필요함을 확인하였습니다.


문제 및 해결 과정

1) 문제 (문자열 공백 제거 (Trim()))

사용자 입력값을 Trim()으로 다듬었으나, null 값이 들어왔을 때 예외가 발생하는 문제가 있었습니다.

 

시도한 해결 방법

string.IsNullOrEmpty() 메서드를 활용하여 null 또는 빈 문자열인지 검사한 후 Trim()을 적용하도록 수정하였습니다.

 

결과

예외 발생 없이 안전하게 문자열을 처리할 수 있도록 개선되었습니다.

 

 

2) 문제 (얕은 복사 (MemberwiseClone())) 

MemberwiseClone()을 활용하여 객체를 복사했으나, 참조형 필드가 원본 객체와 동일한 메모리를 참조하여 데이터가 변경되는 문제가 발생하였습니다.

 

시도한 해결 방법  

복사할 때 수동으로 깊은 복사를 수행하는 itemCopy() 메서드를 구현하여 해결하였습니다.

 

결과  

MemberwiseClone())을 사용하고 후처리를 하여 완전히 복사되는 깊은 복사 방법을 적용하여 원본 데이터와 별도인 객체를 생성하는 데 성공하였습니다.


새롭게 알게 된 점

문자열 다듬기 (Trim())의 활용법

Trim()을 사용할 때 null 값 처리를 반드시 고려해야 한다는 점을 배웠습니다.


얕은 복사와 깊은 복사의 차이점

MemberwiseClone()을 사용할 경우 참조형 필드는 원본 객체를 공유하므로, 깊은 복사가 필요할 경우 별도의 처리가 필요함을 알게 되었습니다.


앞으로의 계획

  • 앞으로 있을 팀프로젝트때 CSV혹은 TSV로 정보를 받게 될텐데 Trim()을 활용하여 오류없이 작동하도록 할 것 입니다.
  • 마찬가지로 이번 개인과제와 비슷한 주제로 예상되는 팀프로젝트때 복사 개념을 사용할 것 같아 MemberwiseClone()을 비롯한 여러 복사 방법을 학습할 예정입니다.
728x90