2011-12-20 3 views
0

나는이 C# 코드를 작동 시키는데 어려움을 겪고 있습니다. console.write를 사용하면 작동하도록 할 수 있지만 주석 처리 한 결과는이 배열에 저장되어 있습니다. 내 프로그램의 다른 섹션.C# 할당되지 않은 배열이지만 아무 것도 지정할 수 있습니까?

FileInfo[] selectionFileOrder; 
    for (int index = 0; index < dateAllOrder.Length; index++) 
    { 
      if (dateAllOrder[index].LastAccessTime.Month == DateTime.Now.Month) 
      { 
       int i = 0; 
       i++; 
       selectionFileOrder[i] = dateAllOrder[index]; 
       // Console.Write("{1}. {0}", dateAllOrder[index].Name, index); 
       // Console.Write(" ({0}) ", dateAllOrder[index].Length); 
       Console.WriteLine(); 
      } 
     } 

내가 구글에서 보았다 그리고 나는 그것이 서명되지 변수 selectionFileOrder하지만 난 그것에 할당 할 아무것도하지 않는 것을 알고 내 문제에 대한 답변을 찾을 수없는 것.

selectionFileOrder = new FileInfo[942]; 

하는 것은 의미있는 관련 수

답변

7

당신은 배열을 초기화해야합니다

FileInfo[] selectionFileOrder = new FileInfo[dateAllOrder.Length]; 

이상이 목록을 사용

IList<FileInfo> selectionFileOrder = new List<FileInfo>(); 
foreach(FileInfo item in dateAllOrder) 
{ 
    if (item.LastAccessTime.Month == DateTime.Now.Month) 
    { 
      selectionFileOrder.Add(item); 
      // Console.Write("{1}. {0}", dateAllOrder[index].Name, index); 
      // Console.Write(" ({0}) ", dateAllOrder[index].Length); 
      Console.WriteLine(); 
    } 
} 

또는 최고, LINQ를 사용!

1

것 목록보다는 배열을 사용하여 selectionFileOrder의 크기를 동적으로 늘릴 수 있습니다.

01 2,368,924,

또는 대안 적으로, 단지 LINQ를 사용

var selectionFileOrder = dateAllOrder.Where(o => o.LastAccessTime.Month == DateTime.Now.Month).ToArray(); 
+2

마술 번호는 어디에서 얻을 수 있습니까? 이것은 젊은 프로그래머를 안내하는 끔찍한 방법입니다. – vidstige

+0

나는 이것을 시도했지만 종류가 작동하지만 null 값을 가지고 있기 때문에 이제는 다른 코드에서 에러가 발생한다. – bobthemac

+0

@vidstige : 새로운 프로그래머를 생각하게하는 이상한 숫자이다. (희망) – SLaks

2

사용 A를 942을 변경해야합니다 : 어떤 신선한 아이디어가 도움이

감사

당신은 변수에 배열을 둘 필요가
+0

감사합니다 그게 효과가 시도 – bobthemac

3

나는이 할 LINQ를 사용하는 것입니다 : 당신이 배열 앞서 할 필요가 얼마나 큰 모르는 것 같습니다 때문에

FileInfo[] selectionFileOrder = dateAllOrder.Where(
    d => d.LastAccessTime.Month == DateTime.Today.Month).ToArray(); 

을 시간, 정말 같은 목록을 추천 할 것입니다 : 당신이를 좋아하는 경우에

var selectionFileOrder = new List<FileInfo>(); 
for (int index = 0; index < dateAllOrder.Length; index++) 
{ 
     if (dateAllOrder[index].LastAccessTime.Month == DateTime.Now.Month) 
     { 
      selectionFileOrder.Add(dateAllOrder[index]); 
     } 
    } 

은 나중에 배열에 목록을 지정할 수 있습니다

FileInfo[] array = selectionFileOrder.ToArray(); 
i이 항상 1이 될 수있는 버그가있는 것처럼 보였습니다. 이는 내가 생각하는 바가 아닙니다.

+0

도와 주셔서 감사합니다 도움의 조합은 나를 도왔습니다 – bobthemac

관련 문제