2014-01-10 2 views
2

내 주요 방법은 Grasshopper 3D라는 소프트웨어에 사용 된 SolveInstance() 방법입니다.이 도구 자체는 Rhino의 플러그인입니다.사용하기 전에 색상 및 복식 목록 반전

두 가지 새로운 목록을 선언합니다. 처음에는 List<Color> colorsList<Double> spaceValues이 각각의 색상 및 이중 객체를 저장하는 데 사용됩니다.

다음 라인 :

 if (!DA.GetDataList(0, colors)) return; 
     if (!DA.GetDataList(1, spaceValues)) return; 

단순히이 목록에 값을 저장하는 데 사용됩니다.

내 코드 :

내 질문이있다
 List<Color> colors = new List<Color>(); 
     List<Double> spaceValues = new List<Double>(); 

     if (!DA.GetDataList(0, colors)) return; 
     if (!DA.GetDataList(1, spaceValues)) return; 

     int width = 10; 
     int height = 0; 

     int U = 1; // numbers of x-objects 
     int V = 100; // number of y-objects 

     DA.GetData(2, ref height); 

     string file = null; 
     bool save = false; 
     DA.GetData(3, ref file); 
     DA.GetData(4, ref save); 

     HeatMap map = new HeatMap(colors, width, height, file, U, V); 
     _maps.Clear(); 
     _maps.Add(map); 

- 그것으로 어떻게이 두 목록을 반전 할 구문 분석하기 전에 : 내가 시도

HeatMap map = new HeatMap(colors, width, height, file, U, V);

colors.Reverse().ToArray()colors.ToArray().Reverse(), 모두를하고 나에게 오류를 돌려 줬어. 고맙습니다.

+0

이것은 내가받은 오류입니다. http://puu.sh/6gpjW/628fbd6cbe.png – theGreenCabbage

+0

가능한 복제본 [C# 목록 반전을 시도 중입니다] (http://stackoverflow.com/questions/6980608)/c-sharp-to-reverse-a-list) –

답변

4

Reverse 목록 자체에 영향을 호출합니다. 그래서 당신이 단지해야합니다

colors.Reverse(); 
HeatMap map = new HeatMap(colors, width, height, file, U, V); 

편집

:

확실히 문제가 귀하의 오류를 보면, 당신은 아무것도를 반환하고 List<Color>에 저장하지 않는 Reverse를 호출하고있었습니다. Reversevoid 메서드이므로 수행 할 수 없습니다.

+0

THanks Kelsey. 이것은 효과가 있었다. – theGreenCabbage

+0

@DanielGrankin의 차이점은 내가 광산을 타이핑 할 때 그의 것이 다르다는 것입니다. 나는 그가 올바르게 기억한다면 여전히'colors = colors.Reverse(); '에 할당했다고 생각합니다. 그는 내가 추측 한 어느 시점에서 편집했다. – Kelsey

+0

오케이, 죄송합니다. 내 의견을 삭제하겠습니다. –

1

colors.Reverse(); 

을 시도하고 다음

HeatMap map = new HeatMap(colors, width, height, file, U, V); 
+0

이것은받는 오류입니다. http://puu.sh/6gpjW/628fbd6cbe.png – theGreenCabbage

+0

당신이 colors = colors.Reverse()를 말하려고했기 때문입니다. 그냥 색보다. 역(); colors.Reverse()는 아무 것도 반환하지 않고 그냥 목록의 항목을 뒤집습니다. –

0

당신은 .Reverse은() 목록을 반환하지 않기 때문에) (

작동하지 않는 첫 번째 역. .Reverse(). ToArray() 또는 .ToArray()를 호출, 대신 빈 공간 반환하지 수 기본 목록을 뒤집습니다. IEnumerable에 대해 동일한 이름의 LINQ 확장 메서드가 있지만 컴파일러에서는 먼저 List 버전을 사용합니다.

이 문제를 해결하려면, 당신은 당신의 목록을 반대합니다 Color.Reverse(); spaceValues.Reverse();

이 간단한 호출을 고려할 수 있습니다. 확장 메서드를 사용하려면 모든 확장 메서드가 정적 메서드이기 때문에 확장 메서드를 명시 적으로 호출 할 수 있습니다.