[CS] 딕셔너리와 리스트 섞어쓰기(1) 전역변수, 지역변수차이

Sireal·2022년 6월 7일
0

C#

목록 보기
30/30

리스트와 딕셔너리를 섞어써야하는 상황이 와서
딕셔너리들을 리스트로 연결해서 사용해야하는 상황이다.

그래서 실험을 하나 했다.
실험 목적은 이렇다.

딕셔너리를 어떻게 효율적으로 사용할 수 있을까?

실험 1. 딕셔너리와 리스트 둘 다 전역변수로

전역변수로 선언된 딕셔너리 인스턴스가 복사가 되어
리스트에 가지각색으로 들어가질 줄 알았는데,
인스턴스 주소값이 리스트로 넘어가는 정도로 그쳤다.

즉, 리스트 내에 같은 딕셔너리들이 들어가서, 하나의 디셔너리를 고쳐도 다같이 똑같이 변경됨.

사실 너무나도 당연한 결과인데, 헷갈리기도 하고 내눈으로 확인하고 싶었다.

실험 2. 딕셔너리를 지역변수로 리스트는 전역변수로

foreach(var dict in _dataList)
{
    if (dict["ChipID"] == chipId)
        return;
}
Dictionary<string, string> _dataDict = new Dictionary<string, string>()
{
    {"ChipID",chipId }
};
_dataList.Add(_dataDict);

리스트 내에 해당 딕셔너리가 있는지 확인한 후
지역변수 딕셔너리를 만들어서 해당 리스트에 넣는 함수를 만들었다.

결과적으로는

리스트에 각각의 딕셔너리가 들어가는 결과를 보여줬다.


이렇듯
리스트내에 전역변수를 첨부하면
똑같은 전역변수가 추가되는 것이므로 주의해야한다.
그리고
다른 변수를 리스트에 추가하고싶으면 지역변수를 이용해야한다.

profile
🚄계속 앞으로🚄

0개의 댓글

관련 채용 정보