[c#] C #에서 알 수없는 길이의 배열

방금 C #을 배우기 시작했고 배열 소개에서 변수를 배열로 설정하는 방법을 보여 주었지만 할당시 배열의 길이를 지정해야하는 것 같습니다. 정렬?



답변

배열에는 길이가 지정되어야합니다. 여러 요소를 허용하려면 List클래스를 사용하십시오 .

예를 들면 :

List<int> myInts = new List<int>();
myInts.Add(5);
myInts.Add(10);
myInts.Add(11);
myInts.Count // = 3


답변

List<>길이를 알 수없는 ‘배열’을 만드는 데 사용 합니다.

.가 List<>.ToArray()아닌 실제 배열을 반환하는 데 사용 합니다 List.

var list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
var array = list.ToArray();


답변

약간의 배경 정보 :

말했듯이, 동적 컬렉션을 원하면 List<T>. 내부적으로 List는 스토리지에도 배열을 사용합니다. 이 배열은 다른 배열과 마찬가지로 고정 된 크기를 갖습니다. 배열이 크기가있는 것으로 선언되면 변경되지 않습니다. 에 항목을 List추가하면 배열에 추가됩니다. 처음에는 List길이가 16이라고 생각하는 배열로 시작합니다. 17 번째 항목을에 추가하려고 List하면 새 배열이 할당되며 이는 이전 배열의 두 배인 것 같습니다. , 그래서 32 항목. 그런 다음 이전 배열의 내용이 새 배열로 복사됩니다. 따라서 List외부 관찰자에게는 동적으로 보일 수 있지만 내부적으로는 규칙도 준수해야합니다.

그리고 짐작 하셨겠지만, 배열의 복사 및 할당은 자유롭지 않으므로 가능한 한 적은 수를 목표로해야 List하며 배열의 초기 크기를 (의 생성자에서 ) 지정할 수 있습니다 . 완벽한 시나리오에서는 원하는 모든 것을 담을 수있을만큼 충분히 큽니다. 그러나 이것은 마이크로 최적화이며 그것이 당신에게 중요하지 않을 것 같지만 실제로 무엇을하고 있는지 아는 것은 항상 좋습니다 .


답변

크기가 변수로 설정된 배열을 만들 수 있습니다.

int size = 50;
string[] words = new string[size]; // contains 50 strings

그러나 100 단어가 필요하다고 결정하면 나중에 그 크기를 변경할 수 없습니다. 크기가 정말 동적이어야하는 경우 다른 종류의 데이터 구조를 사용해야합니다. 시험List .


답변

ArrayList.NET 1.x에서 if를 사용 하거나List<yourtype> .NET 2.0 또는 3.x .

System.Collections및 에서 검색하십시오 System.Collections.Generics.


답변

데이터가 고유 한 경우 사전을 살펴볼 수도 있습니다. 그러면 작업 할 두 개의 열이 제공됩니다.

사용자 이름, 총 청구서

값만 검색하고 업데이트 할 수있는 많은 내장 도구를 제공합니다.


답변

var yummy = new List<string>();
while(person.FeelsHappy()) {
    yummy.Add(person.GetNewFavoriteFood());
}
Console.WriteLine("Sweet! I have a list of size {0}.", list.Count);
Console.WriteLine("I didn't even need to know how big to make it " +
    "until I finished making it!");