왜 작동하지 않습니까? 정적 메서드 내에서 정적 변수를 만들 수 없습니까?
public static int[] GetListOfAllDaysForMonths()
{
static int[] MonthDays = new int[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
return MonthDays;
}
나는 방법의 외부 변수 선언을 이동했다 :이 방법을 만들어 있도록
static int[] MonthDays = new int[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
public static int[] GetListOfAllDaysForMonths()
{
return MonthDays;
}
또한, 우리는 메모리에 주위에 떠있는이 배열의 하나 개의 인스턴스가? 이 메서드는 정적 클래스 안에 있습니다.
이제 제 질문은 여기에 있습니다. 메소드에 정적 지역을 추가 할 수 없기 때문에 두 번째 예제에서 메모리 할당을 실제로 절약 할 수 있습니까? 방법? 메서드 외부에있는 지역 변수가 호출되어 메모리에 해당 int가 생성되는 시점은 언제입니까? 그리고이 클래스가 정적 클래스에 있고 그 클래스를 사용하여 예제 # 2의 메서드를 호출하는 경우에만 한 번 수행합니까? – PositiveGuy
예, 할당을 저장합니다. 하지만 훨씬 더 중요한 최적화는 IEnumerable을 반환 할 것입니다. (Enumerable.Range (1,31)) –