C #에서 목록을 비우는 방법은 무엇입니까?


109

목록을 비우고 싶습니다. 그렇게하는 방법?


34
응답 시간은 여기 빨리 읽고이었을 것보다 / MSDN 검색
V4Vendetta

27
또한 답은 MSDN보다 여기에서 더 쉽게 찾을 수 있습니다.
Matt Connolly 2011

14
Google이라면 .net empty list이 페이지가 MSDN 보다 먼저 등장 한다는 사실은 말할 것도 없습니다 !
Vivian River

2
2018 년 V4Vendetta @, 나는 ... StackOverflow에 아마 코멘트에 MSDN의 문서에 대한 링크가있는 모든 스레드에서 귀하의 코멘트를 넣어 봇을 만들 것을 제안합니다
scharette

답변:


234

정말 쉽습니다 :

myList.Clear();

3
... 목록이 실제로있는 경우 List<>, ArrayList또는 구현 IList. ;)
Lucero 2011 년

3
@Lucero가 둘 다 아닌 경우 목록으로 호출됩니까?
Srinivas Reddy Thatiparthy 2011 년

16
이것은 Google에서 최고 히트작 이며이 문제가 발생했기 때문에이 문제에 대해 댓글을 달았습니다. 루프에서 동일한 목록을 사용하고 clear를 사용하면 목록은 종종 이전 객체에 대한 참조를 유지합니다. 나는 종종 = new LisT <T> (); 모든 이전 할당이 즉시 지워지기 때문입니다. 하지만 대부분의 사람들에게는 .Clear (); 충분하지만 이상하게 작동하는 목록을 발견하면 = new List <T> ();를 사용해보십시오.
Charles

1
2020 년 현재 여기에 일부 잘못된 정보가 제공 되었기 때문에 이것을 두 번 부정 List<T>.Clear할 것입니다. 필요한 경우 GC가 할당 을 지울 수 있도록 모든 참조를 올바르게 지 웁니다. new List<T>이 작업을 수행하지 않으며 모든 시나리오에 적합하지 않습니다
John

28

"목록"이를 의미하는 List<T>경우 Clear 메서드가 원하는 것입니다.

List<string> list = ...;
...
list.Clear();

이러한 사항에 대해 MSDN 문서를 검색하는 습관을 가져야합니다.

해당 유형의 다양한 부분에 대한 문서를 빠르게 검색하는 방법은 다음과 같습니다.

이러한 Google 쿼리는 모두 링크 번들을 나열하지만 일반적으로 각 경우에 Google이 제공하는 첫 번째 링크를 원합니다.


"이 모든 것은 링크 번들을 나열하지만 일반적으로 첫 번째 링크를 원합니다." 목록을 비우고 싶지 않다면?
a CVn 2011 년

죄송합니다. 좀 더 명확 했어야 했어요. 일반적으로 "목록 클래스"가 아닌 Google에서 제공하는 첫 번째 링크를 원합니다.
Lasse V. Karlsen 2011 년

9

대체 답변을 제공하려면 (누가 5 개의 동일한 답변이 필요합니까?) :

list.Add(5); 
// list contains at least one element now
list = new List<int>();
// list in "list" is empty now

이전 목록에 대한 다른 모든 참조는 삭제되지 않았습니다 (상황에 따라 원하는 것일 수 있음). 또한 성능 측면에서 일반적으로 약간 느립니다.


list = new List <> () 설정이 실제로 list.Clear ();보다 느린 지 확인할 수 있습니까? MSDN (아래 링크) list.Clear (); O (N) 연산이며 새 목록을 인스턴스화하는 데 그보다 오래 걸릴 것이라고 상상할 수 없습니다. msdn.microsoft.com/en-us/library/dwb5h52a(v=vs.110).aspx
Chris Tramel 2015 년

5
DotNetPerls는 벤치 마크를 수행하고 새로운 List <>가 더 빠르다는 것을 발견했습니다. dotnetperls.com/list-clear
게르하르트 파월에게

더 나아가 list, 새로운 참조가 있다는 것을 명심 하십시오. 따라서 해당 목록에서 잠금을 사용하는 경우에는 사용하지 마십시오.
jeromej jul.

9

옵션 # 1 : Clear () 함수를 사용 하여 List<T>용량 을 비우고 유지합니다.

  • Count는 0으로 설정되고 컬렉션 요소에서 다른 개체에 대한 참조도 해제됩니다.

  • 용량은 변경되지 않습니다.

옵션 # 2- Clear ()TrimExcess () 함수를 사용 List<T>하여 초기 상태 로 설정 합니다.

  • Count는 0으로 설정되고 컬렉션 요소에서 다른 개체에 대한 참조도 해제됩니다.

  • 빈 항목을 트리밍하면 List<T>목록의 용량이 기본 용량으로 설정됩니다.

정의

개수 = 실제로있는 요소의 수List<T>

용량 = 내부 데이터 구조가 크기를 조정하지 않고 보유 할 수있는 총 요소 수입니다.

Clear () 만

List<string> dinosaurs = new List<string>();    
dinosaurs.Add("Compsognathus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Deinonychus");
Console.WriteLine("Count: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
dinosaurs.Clear();
Console.WriteLine("\nClear()");
Console.WriteLine("\nCount: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);

Clear () 및 TrimExcess ()

List<string> dinosaurs = new List<string>();
dinosaurs.Add("Triceratops");
dinosaurs.Add("Stegosaurus");
Console.WriteLine("Count: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
dinosaurs.Clear();
dinosaurs.TrimExcess();
Console.WriteLine("\nClear() and TrimExcess()");
Console.WriteLine("\nCount: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);

5

당신은 할 수 있습니다

var list = new List<string>();
list.Clear();

5

명확한 방법을 사용할 수 있습니다.

List<string> test = new List<string>();
test.Clear();

4

목록에 Clear () 함수가 필요합니다.

List<object> myList = new List<object>();

myList.Add(new object()); // Add something to the list

myList.Clear() // Our list is now empty
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.