예제가 포함된 C# ArrayList 자습서

⚡ 스마트 요약

C#의 ArrayList는 System.Collections 네임스페이스에 속하는 동적 컬렉션으로, 객체를 요소로 저장합니다. 일반 배열과 달리 런타임에 크기가 변하며, 정수, 문자열, 부울 값을 하나의 리스트에 함께 저장할 수 있습니다.

  • 🔄 동적 크기 조정: ArrayList는 런타임에 요소를 추가하고 제거하므로 배열처럼 항목 수를 미리 고정할 필요가 없습니다.
  • 📦 객체 스토리지: 모든 요소는 객체로 저장되므로 하나의 ArrayList에 정수, 문자열, 부울과 같은 다양한 데이터 유형을 저장할 수 있습니다.
  • ➕ 핵심 방법: Add, Insert, Remove, RemoveAt, Contains, and Sort는 ArrayList에서 매일 수행하는 기본적인 연산들을 다룹니다.
  • 📊 수량 및 용량: Count 속성은 현재 항목 수를 반환하고, Capacity는 할당된 저장 공간을 반환합니다.
  • ✅ 현대적인 선택: Microsoft 컴파일 타임 타입 안전성을 추가하고 박싱을 방지하기 때문에 새 코드에는 제네릭 List를 사용하는 것을 권장합니다.
  • 🤖 AI 지원: GitHub Copilot은 ArrayList 코드를 구성하고, ML.NET 파이프라인은 C# 컬렉션 형식을 통해 데이터를 전달합니다.

C# ArrayList

C#의 ArrayList란 무엇입니까?

ArrayList 컬렉션은 다음과 유사합니다. 배열 C#의 데이터 유형. 가장 큰 차이점은 배열 목록 컬렉션의 동적 특성입니다.

배열의 경우 배열 선언 시 배열이 보유할 수 있는 요소의 수를 정의해야 합니다. 하지만 Array List 컬렉션의 경우 미리 정의할 필요가 없습니다. 언제든지 Array List 컬렉션에서 요소를 추가하거나 제거할 수 있습니다. 배열 목록 컬렉션에서 사용 가능한 작업을 자세히 살펴보겠습니다.

배열 목록 선언

ArrayList의 선언은 아래에 제공됩니다. ArrayList 데이터 유형의 도움으로 배열 목록이 생성됩니다. "new" 키워드는 ArrayList의 객체를 생성하는 데 사용됩니다. 그런 다음 개체는 변수 a1에 할당됩니다. 이제 변수 a1은 배열 목록의 다양한 요소에 액세스하는 데 사용됩니다.

ArrayList a1 = new ArrayList()

배열에 요소 추가

add 메소드는 ArrayList에 요소를 추가하는 데 사용됩니다. add 메소드를 사용하면 모든 종류의 데이터 유형 요소를 배열 목록에 추가할 수 있습니다. 따라서 정수, 문자열 또는 부울 값을 배열 목록에 추가할 수 있습니다. 추가 방법의 일반적인 구문은 다음과 같습니다.

ArrayList.add(element)

다음은 "add" 메소드를 사용하는 방법에 대한 몇 가지 예입니다. add 메소드를 사용하여 Array List 컬렉션에 다양한 데이터 유형을 추가할 수 있습니다.

아래에서는 정수의 문자열과 부울 값을 배열 목록 컬렉션에 추가하는 방법에 대한 예를 볼 수 있습니다.

  • a1.add(1) – 컬렉션에 정수 값을 추가합니다.
  • a1.add(“Example”) – 컬렉션에 문자열 값을 추가합니다.
  • a1.add(true) – 컬렉션에 부울 값을 추가합니다.

이제 이것이 코드 수준에서 작동하는 것을 살펴보겠습니다. 아래에 언급된 모든 코드는 콘솔 애플리케이션에 작성됩니다. 코드는 Program.cs 파일에 기록됩니다.

아래 프로그램에서는 새로운 배열 목록을 생성하는 코드를 작성하겠습니다. 또한 요소를 추가하고 배열 목록의 요소를 표시하는 방법도 보여 드리겠습니다.

C#의 배열리스트

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1[0]);	  
   Console.WriteLine(a1[1]);
   Console.WriteLine(a1[2]);
   Console.ReadKey();
  }
 }
}

Code 설명:-

  1. 첫 번째 단계는 배열 목록을 선언하는 데 사용됩니다. 여기서는 배열 목록의 요소를 보유하는 변수로 a1을 선언합니다.
  2. 그런 다음 add 키워드를 사용하여 숫자 1, 문자열 "Example" 및 부울 값 'true'를 배열 목록에 추가합니다.
  3. 그런 다음 Console.WriteLine 메서드를 사용하여 각 배열 목록 요소의 값을 콘솔에 표시합니다. 배열과 마찬가지로 인덱스 위치를 통해 요소에 액세스할 수 있다는 것을 알 수 있습니다. 따라서 Array List의 첫 번째 위치에 액세스하려면 [0] 인덱스 위치를 사용합니다. 등등.

위 코드를 올바르게 입력하여 프로그램을 실행하면 다음과 같은 출력이 표시됩니다.

출력:

C#의 배열리스트

출력에서 배열 목록의 모든 요소가 콘솔로 전송되는 것을 볼 수 있습니다.

ArrayList의 일부로 사용할 수 있는 몇 가지 메서드를 더 살펴보겠습니다.

카운트

이 메서드는 ArrayList 컬렉션의 항목 수를 가져오는 데 사용됩니다. 다음은 이 명령문의 일반적인 구문입니다.

ArrayList.Count() – 이 메서드는 배열 목록에 포함된 요소 수를 반환합니다.

포함

이 메서드는 ArrayList 컬렉션에 요소가 있는지 확인하는 데 사용됩니다. 다음은 이 문의 일반적인 구문입니다.

ArrayList.Contains(element) – 이 메서드는 요소가 목록에 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

제거 위치

이 메서드는 ArrayList 컬렉션의 특정 위치에 있는 요소를 제거하는 데 사용됩니다. 다음은 이 문의 일반적인 구문입니다.

ArrayList.RemoveAt(index) – 이 메서드는 배열 목록의 특정 위치에서 요소를 제거합니다.

이제 이것이 코드 수준에서 작동하는 것을 살펴보겠습니다. 아래에 언급된 모든 코드는 콘솔 애플리케이션에 작성됩니다. 코드는 Program.cs 파일에 기록됩니다.

아래 프로그램에서는 위에서 언급한 방법을 어떻게 사용할 수 있는지 알아보기 위해 코드를 작성해 보겠습니다.

C#의 배열리스트

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1.Count);
   Console.WriteLine(a1.Contains(2));
   Console.WriteLine(a1[1]);
   a1.RemoveAt(1);
   Console.WriteLine(a1[1]);
   Console.ReadKey();
  }
 }
}

Code 설명:-

  1. 따라서 우리가 보고 있는 첫 번째 속성은 Count 속성입니다. 배열 목록 a1의 Count 속성을 가져온 다음 이를 콘솔에 쓰고 있습니다.
  2. 두 번째 부분에서는 Contains 메서드를 사용하여 ArrayList a1에 요소 2가 포함되어 있는지 확인합니다. 그런 다음 Writeline 명령을 통해 결과를 콘솔에 씁니다.
  3. 마지막으로 요소 제거 방법을 보여주기 위해 아래 단계를 수행합니다.
    1. 먼저 배열 목록의 인덱스 위치 1에 있는 요소의 값을 콘솔에 씁니다.
    2. 그런 다음 배열 목록의 인덱스 위치 1에 있는 요소를 제거합니다.
    3. 마지막으로 배열 목록의 인덱스 위치 1에 있는 요소의 값을 콘솔에 다시 씁니다. 이 일련의 단계는 제거 방법이 제대로 작동하는지 여부에 대한 공정한 아이디어를 제공합니다.

위 코드를 올바르게 입력하여 프로그램을 실행하면 다음과 같은 출력이 표시됩니다.

출력:

C#의 배열리스트

마지막 값이 왜 참인가요?

일련의 이벤트를 보면 예제 요소가 위치 1에 있으므로 배열에서 제거됩니다. 그런 다음 배열의 위치 1은 값이 'true'인 이전 위치 2에 있던 항목으로 대체됩니다.

C# ArrayList를 반복하는 방법

ArrayList의 모든 요소를 ​​읽는 것은 흔히 수행되는 작업입니다. ArrayList는 항목을 객체로 저장하기 때문에 foreach 루프나 Count 속성을 사용하는 for 루프를 통해 각 요소를 순회할 수 있습니다. foreach 루프는 인덱스 없이 각 항목을 순서대로 탐색하므로 가장 간단한 방법입니다.

아래 예제는 문자열로 구성된 ArrayList를 생성하고 각 값을 한 줄씩 출력합니다. 이 코드는 콘솔 애플리케이션의 Program.cs 파일에 작성되었습니다.

단계 1) System.Collections 네임스페이스를 가져오고 세 개의 항목을 가진 ArrayList를 생성합니다.

단계 2) foreach 루프를 사용하여 각 요소를 객체로 읽어 콘솔에 출력합니다.

using System;
using System.Collections;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add("Java");
   a1.Add("Python");
   a1.Add("Kotlin");
   foreach (object item in a1)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

Code 설명:-

  1. System.Collections 네임스페이스를 가져와서 프로그램에서 ArrayList 형식을 사용할 수 있도록 합니다.
  2. Add 메서드를 사용하여 세 개의 문자열 값을 ArrayList에 추가합니다.
  3. foreach 루프는 각 항목을 객체로 읽고, Console.WriteLine 메서드는 이를 새 줄에 출력합니다.

프로그램이 실행되면 출력됩니다. Java, Python예산 및 코 틀린 각 요소를 별도의 줄에 나열하세요. Count 속성을 사용하는 for 루프를 사용하면 각 요소의 인덱스 위치를 활용하면서 동일한 결과를 얻을 수 있습니다.

C# ArrayList의 메서드 및 속성

ArrayList 클래스는 요소를 관리하기 위한 다양한 내장 메서드와 속성을 제공합니다. 항목을 추가하고 제거하는 것 외에도 정렬, 검색 및 역순 정렬이 가능합니다. 가장 일반적인 멤버는 다음과 같습니다.

회원 기술설명
추가 ArrayList의 끝에 요소 하나를 추가합니다.
끼워 넣다 지정된 인덱스 위치에 요소를 추가합니다.
제거 특정 요소의 첫 번째 발생 위치를 제거합니다.
제거 위치 지정된 인덱스 위치에 있는 요소를 제거합니다.
초기화 ArrayList에서 모든 요소를 ​​제거합니다.
종류 요소들을 오름차순으로 정렬합니다.
Reverse Reverse목록에 있는 요소들의 순서입니다.
포함 주어진 요소가 리스트에 존재하면 true를 반환합니다.
인덱스의 주어진 요소의 인덱스 위치를 반환합니다.
카운트 저장된 요소의 개수를 반환하는 속성입니다.
생산 능력 리스트가 담을 수 있는 요소의 개수를 반환하는 속성입니다.

이러한 멤버를 사용하면 로직을 직접 작성하지 않고도 항목을 추가, 검색, 정렬 및 삭제할 수 있으며, 이는 일반 배열보다 컬렉션을 사용하는 주요 장점 중 하나입니다.

C#에서 ArrayList와 List의 차이점

ArrayList와 제네릭 모두 명부 런타임에 크기가 커질 수 있는 항목 그룹을 저장하는 데 사용되는 라이브러리는 여러 가지가 있지만, 유형 처리 방식은 서로 다릅니다. 이러한 차이점을 알면 최신 C# 코드에 적합한 라이브러리를 선택하는 데 도움이 됩니다.

주요 차이점은 다음과 같습니다.

  • 유형 안전: ArrayList는 모든 항목을 객체로 저장하는 반면, List는 선언된 하나의 유형에만 바인딩되며 컴파일 시점에 검사됩니다.
  • 성능 : ArrayList는 int와 같은 값 유형을 박싱하고 언박싱하는데, 이 과정에 시간이 소요되는 반면, List는 박싱을 피함으로써 속도를 향상시킵니다.
  • 네임 스페이스 : ArrayList는 System.Collections에 속하고, List는 System.Collections.Generic에 속합니다.
  • 주조 : ArrayList에서 데이터를 읽을 때는 종종 원래 유형으로 다시 형변환해야 하지만, List는 올바른 유형을 직접 반환합니다.
  • 권장 사항 : Microsoft 새로운 개발에는 목록 형식이 더 안전하고 빠르며 읽기 쉽기 때문에 권장합니다.

요약하자면, ArrayList는 기존 코드나 혼합 데이터셋 저장소를 이해하는 데 유용하지만, List는 오늘날 대부분의 애플리케이션에서 선호되는 선택입니다.

자주 묻는 질문

배열은 크기가 고정되어 있으며 선언 시 설정된 하나의 데이터 유형만 저장합니다. ArrayList는 런타임에 크기가 커지거나 작아지며 모든 항목을 객체로 저장하므로 하나의 목록에 여러 데이터 유형을 혼합하여 저장할 수 있습니다.

ArrayList는 삭제되지 않았지만 Microsoft 새로운 개발에는 권장하지 않습니다. System.Collections.Generic의 제네릭 List 클래스가 타입 안정성과 성능 향상을 제공하므로 대부분의 최신 C# 코드에서는 List를 사용합니다.

ArrayList는 항목을 객체로 저장하기 때문에 int와 같은 값 유형을 추가하면 해당 값이 객체로 감싸지는데, 이를 박싱(boxing)이라고 합니다. 다시 읽어 원래 유형으로 캐스팅하는 것은 언박싱(unboxing)입니다. 두 단계 모두 성능 저하를 초래하는데, List는 이러한 박싱을 피합니다.

ArrayList는 여러 사용자가 동시에 읽을 수 있지만, 컬렉션이 수정될 때 인스턴스 멤버가 스레드로부터 안전하다고 보장할 수는 없습니다. 안전한 멀티스레드 쓰기를 위해서는 ArrayList로 감싸는 것이 좋습니다.Sync시간 제한 메서드를 사용하거나 대신 동시 컬렉션을 사용하십시오.

Count는 현재 ArrayList에 저장된 요소의 개수입니다. Capacity는 크기가 조정되기 전에 저장할 수 있는 총 요소 개수입니다. Capacity는 항상 Count와 같거나 크며, 항목을 추가하면 자동으로 증가합니다.

Cast 및 ToList 메서드를 사용하여 항목을 강력한 형식의 List로 복사하거나 ToArray 메서드를 호출하여 객체 배열을 얻을 수 있습니다. 제네릭 List로 변환하는 것은 형식 안정성을 복원하기 때문에 흔히 사용됩니다.

네. GitHub Copilot은 간단한 주석이나 메서드 이름만으로 ArrayList 선언, 호출 추가 및 삭제, 반복문 작성을 지원합니다. 또한 새로운 C# 코드 작성 시 권장되는 컬렉션 형식인 일반 List 버전을 제안하는 경우도 많습니다.

ML.NET은 일반적으로 List 및 IEnumerable과 같은 제네릭 컬렉션을 통해 학습 데이터를 읽어 IDataView 파이프라인에 매핑합니다. 강력한 형식의 컬렉션을 사용하면 머신 러닝 데이터를 명확하고 형식 안전하게 유지할 수 있으므로 제네릭이 아닌 ArrayList는 직접 사용하는 경우가 드뭅니다.

이 게시물을 요약하면 다음과 같습니다.