2013-12-12 1 views
1

나는 목록의 문자열을 가져 와서 적절한 열거 형으로 변환하려고합니다. enum.parse를 사용하는 코드는이 작업을 수행합니다. 내 코드의 문제는 루프를 벗어난 후 dispoFilters를 저장하지 않는다는 것입니다. 이 문제를 해결하는 좋은 방법은 무엇입니까?루프에서 편집 할 수있는 목록을 저장 하시겠습니까?

// Get Disposition enum 
if (model.FilterSet.Dispositions != null) 
{ 
    List<int> dispoFilters = new List<int>(); 
    for (int i = 0; i < model.FilterSet.Dispositions.Count; i++) 
    { 
     dispoFilters.Add((int)((RespondentStatus)Enum.Parse(typeof(RespondentStatus), model.FilterSet.Dispositions[i].ToString()))); 
    } 
} 

답변

3

다른 답변이 올바른지,하지만 당신은 심지어 for 루프를 사용할 필요가 없습니다. 여기에 당신이 할 수있는 것입니다 :

var dispoFilters = model.FilterSet.Dispositions.ConvertAll(item => 
    (int)((RespondentStatus)Enum.Parse(typeof(RespondentStatus), item.ToString()))); 

을 나는 model.FilterSet.DispositionsList 것을 assming 해요; 그렇지 않으면 을 ConvertAll 앞에 사용해야합니다.

8

IF 문을 종료 한 후에 코드에 dispoFilters가 저장되지 않습니다.

선언을 조금 높게 움직입니다.

List<int> dispoFilters = new List<int>(); 
if (model.FilterSet.Dispositions != null) 
{ 
    for (int i = 0; i < model.FilterSet.Dispositions.Count; i++) 
    { 
     dispoFilters.Add((int)((RespondentStatus)Enum.Parse(typeof(RespondentStatus), model.FilterSet.Dispositions[i].ToString()))); 
    } 
} 

Scope

는 시간을 정의하는 데 사용되는 용어이며, 어떤 코드의 일부는, 당신의 변수를 사용할 수 있습니다 할 수 있습니다. if 문 내에서 변수를 선언하면 if를 종료 할 때 범위가 손실됩니다.

5

if 블록 안에 dispoFilters을 정의 했으므로이 값을 사용할 수 없습니다. 따라서 필요에 따라 if 외부 또는 scope 외부에 정의하십시오. 루프 외부에서 사용할 수는 없지만 루프 외부에서 사용할 수 있지만 조건은 if입니다. 코드를 기반으로

List<int> dispoFilters = new List<int>(); 
if (model.FilterSet.Dispositions != null) 
{ 
    for (int i = 0; i < model.FilterSet.Dispositions.Count; i++) 
    { 
     dispoFilters.Add((int)((RespondentStatus)Enum.Parse(typeof(RespondentStatus), model.FilterSet.Dispositions[i].ToString()))); 
    } 
} 

:

if (model.FilterSet.Dispositions != null) 
    { 
     List<int> dispoFilters = new List<int>(); 
     for (int i = 0; i < model.FilterSet.Dispositions.Count; i++) 
     { 
      dispoFilters.Add((int)((RespondentStatus)Enum.Parse(typeof(RespondentStatus), model.FilterSet.Dispositions[i].ToString()))); 
     } 
     //With in the if condition outside the loop you can still access dispoFilters 
    } 
관련 문제