2013-01-13 2 views
0

문자열과 일치하는 이름을 가진 변수를 선언해야합니다.문자열을 사용하여 변수를 선언하는 방법은 무엇입니까?

이것은 내가해야 할 일이지만 실제는 "s"이라는 새로운 표현식 인스턴스로 컴파일됩니다. 문자열 s에 저장된 이름을 가져와야합니다. 어떻게 해결할 수 있습니까?

코드 :

foreach (string s in StringArray) 
      { 
       if (SomeDifferentArray.Contains(s) != true) 
       { 
        Expression s = new Expression(); 
       } 
      } 

나는 StringArray의 각 문자열 표현의 새로운 인스턴스를해야하고, 그 표현의 각각의 문자열이 보유하고있는 문자에 따라 이름이 지정 될 필요가있다.

+0

아마도 C#으로 태그를 붙이거나 C# somehwere라고 언급해야합니다 (최소한 C#이라고 추측합니다) –

+1

* "이것은 내가해야 할 일입니다"* - 아니, 생각하는 * 당신 * 필요한 것. 실제로 그것은 매우 열악한 해결책 일 것입니다. 프로그램 논리를 변수 이름 (프로그램이 컴파일되면 존재하지도 않음)에 묶는 것은 유지 보수가 불가능한 코드로 이어질 것입니다. 당신은 콜렉션을 원할 것이다. –

+0

이 질문보다는 디자인 문제가있을 것입니다. 그런 식으로하고 싶지 않아. 디자인을 검토하십시오. – DarthVader

답변

2

이것은 매핑 컬렉션의 유스 케이스처럼 보입니다. 나는 나 자신을 C#을 사용자 모르겠지만 사전 클래스로 이동 한 것입니다 의심 :

http://msdn.microsoft.com/en-us/library/xfhwa508.aspx

C# 당신이 의존 컴파일시 변수를 생성 할 수 있도록 컴파일 된 언어이다 런타임 데이터. 그러나 맵 스타일 데이터 구조를 사용하여 고유 키 오브젝트를 단일 값 오브젝트와 연관시킬 수 있습니다. 귀하의 경우에는 stringExpression을 각각 연결할 수 있습니다. 원래 SomeArray에서 임의의 문자열 s이 루프 완료 후

Dictionary<string, Expression> myExpressionDict = new Dictionary<string, Expression>(); 

foreach(string s in StringArray) { 
    if(!SomeDifferentArray.Contains(s)) { 
     myExpressionDict[s] = new Expression(); 
    } 
} 

, 당신은 관련 Expression 개체를 가져 myExpressionDict[s] 할 수 있습니다.

C#에서는이 구조를 "사전"이라고합니다. 이와 동일한 데이터 구조는 프로그래밍 언어 나 라이브러리에 따라 "지도"또는 "해시"라는 이름으로 갈 수도 있습니다. 예를 들어, Java 콜렉션 프레임 워크에서 맵이라고 부릅니다. 루비에서는 해시라는 용어를 사용하고 파이썬에서는 이름 사전 (또는 간단히 dict)을 사용합니다.

0

지도 또는 사전을 사용할 수 있습니다. 정확하게 당신이 묻고있는 것이 아니라 훨씬 더 간단합니다.

관련 문제