2018년 9월 29일 토요일

변수명을 동적으로 선언해 사용하는 방법! (C#)

코드를 짜다 보면 반복문을 이용이거나 기타 여러가지의 이유로 인해 변수의 이름을 동적으로 할당해야 하는 경우가 발생합니다.

1
2
3
4
5
6
7
8
9
10
11
12
//반복문에 의해 반복하는 만큼 변수를 선언해야 하는 경우
for(int i=0; i<100; i++)
{
    //변수명을 이렇게 동적으로 지정하여
    string strName + i = "";
}
 
//이런 이름을 가진 변수들을 선언하고 싶은 경우
strName0 = "";
strName1 = "";
strName2 = "";
strName3 = "";
자바스크립트의 경우에는 위와 같은 방법으로 바로 변수를 선언하여 활용할 수 있지만 자바나 C#의 경우엔 리플렉션이나 map을 이용한 해결 방법이 있습니다.

어느 방법을 사용해도 상관없으나 그냥 변수의 이름 정도를 컨트롤 하는 일에 클래스 객체를 얻어오는 리플렉션 보다는 map이 훨씬 간단하고 컨트롤도 쉬우니 map을 활용한 방법에 대해 알아보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
//map 선언
Dictionary<stringstring> mapName = new Dictionary<stringstring>
 
//반복분
for(int i=0; i<100; i++)
{
    //원하는 변수명으로 해당 변수를 선언한 다음 map에다 추가
    mapName.Add(String.Format("strName{0}",i.ToString(), string));
    
    //변수 사용할 땐 이름으로 바로 호출
    napName["strName" + i]
}

#2 : 원하는 형태를 담을 map을 선언합니다.
선언할 때 첫번때 string은 변수명을 두번째 string은 해당 변수의 형으로 지정하였습니다.

#8 : 선언한 map에다가 반복문을 활용하여 원하는 이름으로 변수들을 선언한 뒤 넣는 과정입니다.

위와 같이 할 경우엔 변수들 이름은 strName0 ,strName1 ,strName2 ,strName3 이런식으로 되었겠네요.

#11 : 담아두었던 변수들을 사용할 때 호출 방법 입니다.

보시다시피 변수 이름을 문자열 형태로 작성할 수 있기 때문에 자유롭게 호출이 가능합니다.

^^

짧은 글이지만 해당 정보를 찾으시는 분들께 도움이 되었으면 좋겠습니다 

혹시나 다른 궁금한 사항이나 잘못된 내용은 언제든 남겨주시면 바로 답변하겠습니다

감사합니다!




Share: