찾다
백엔드 개발C#.Net 튜토리얼C# 일반 목록 List의 기본 사용법 요약

샘플 코드는 다음과 같습니다.
namespace SampleListT
{
class Program
{
static void Main(string[] args)
{
//using System.Collections .Generic; List
//ArrayList 네임스페이스에서 System.Collections 사용
//둘 모두 목록 컬렉션을 구현하며, 하나는 일반 컬렉션이고 다른 하나는 일반 컬렉션이 아닙니다.
//다음으로 컬렉션에 Person 객체를 추가합니다

Person p1 = new Person( "aladdin" , 20);
Person p2 = new Person("zhao", 10);
Person p3 = new Person("jacky", 40);

//목록의 컨테이너 크기를 지정하지 않은 경우 기본값은 0입니다. 요소가 추가되는 한 자동으로 4로 확장됩니다. .5번째 요소를 추가하면 8이 되고, 9번째 요소를 추가하면 16이 됩니다
//확장할 때는 항상 기하급수적으로 늘어나는 것을 볼 수 있는데, 이는 메모리를 다시 열어야 한다는 것입니다. 요소의 개수를 미리 알고 있거나 가능한 개수라면 최대한 크게 trade-off 값을 주는 것이 가장 좋습니다
//요소를 3개 추가하고 컨테이너 크기를 4로 설정합니다. 참고: 4로 설정한다고 해서 4개의 요소만 배치할 수 있는 것은 아닙니다. 이를 초과하면 확장으로 인한 오버헤드를 최대화하기 위한 것입니다.
List list = new List(4);

list.Add(p1);
list.Add(p2);
list.Add(p3);

//이 방법 예를 들어, 할당 크기가 100이고 나머지는 4개만 사용하면 낭비가 아닌가요?
//이 메서드가 호출되면 요소 수가 컨테이너 크기의 90% 이상을 차지하는 경우 재활용되지 않습니다.
list.TrimExcess();

//ArrayList 메소드는 List와 동일하게 사용됩니다. 차이점은 객체의 컬렉션이고 매개변수가 Object라는 점입니다. 목록을 사용해 보세요
//여기서 더 이상 데모는 없습니다


// 1 수집기를 초기화합니다
// C# 3.0부터 초기화 함수는 제공되나 응답이 없습니다. IL에서는 ADD 메소드로 변환하여
List l2 = new List() { 1 ,2 를 호출합니다. 3 ,4 ,5 };


// 2 요소 추가 AddRange() 이 메서드는 여러 개체를 한 번에 추가할 수 있습니다.
Listlists = new List(10 );
//매개변수는 필수입니다. 삭제할 수 있는 객체는 배열일 수도 있습니다.
list.AddRange( new Person[] { new Person( "aladdin" ,20) , new Person("zhao", 6)});

//일괄 매개변수를 구성하고 전달하면 효과는 AddRange
List mylist = new List(new Person[] { new Person( "aladdin" ,20) , new Person("zhao" ,6)});


// 3 요소 삽입
// Insert() 메소드를 사용하여 다음을 수행할 수 있습니다. 지정된 위치에 요소를 삽입합니다
// 예를 들어 1번 위치에 삽입하면 마지막이 됩니다. 알라딘 재키자오가 되었습니다.. 삽입한다는 것은 제가 이전에 이 위치를 차지했다는 의미입니다. 그 다음 사람은 모두 한 자리 뒤로 이동합니다
mylist.Insert( 1 , new Person( "jacky" , 88 ));

foreach(mylist의 사람 p)
{
Console.WriteLine(p.name);
}


// 4 요소 액세스
// ArrayList 및 List 모두 액세스를 위한 인덱서를 제공합니다.
Console.WriteLine ( "---요소 액세스 -- ----------");

for (int i = 0; i {
Console.WriteLine(mylist[i].name);
}
//할 수 있습니다 또한 이를 달성하기 위해 foreach를 사용하며 여기에는 예제가 제공되지 않습니다.

//Foreach 메서드 사용
//public 위임자 void Action(T obj); >//Day 표현식을 사용하여 일부 위치에 구현
Console.WriteLine( "--- ---------------ForEach 메서드를 사용하여 출력------ -----------------------");

mylist.ForEach( param => Console.WriteLine(param.name) ) ;

// 5개 요소 삭제
//RemoveAt() 값을 사용하여 요소 삭제를 인덱서에 직접 전달할 수 있음
//첫 번째 요소를 직접 삭제
mylist.RemoveAt( 0);
//삭제할 요소를 Remove 메소드에 전달할 수도 있습니다

Listlists2 = new List(10);

Person per1 = new Person( "aladdin" , 100 );

Person per2 = new Person("zhao", 100);
Person per3 = new Person("jacky", 100);

lists2 .Add(1개);

lists2.Add(2개);
lists2.Add(3개);

lists2 .Remove(3개);

Console.WriteLine( " ------삭제된 요소---------");

foreach (Person per in listed2)
{
Console.WriteLine(per.name);
}
//Jacky라는 요소가 삭제된 결과를 확인할 수 있습니다.
//Remove 메소드의 삭제 과정을 살펴보겠습니다
// IndexOf 메소드를 사용하여 객체의 인덱스를 확인한 후, 인덱스에 따라 삭제합니다
// IndexOf 메소드에서는, 먼저 요소가 IEquatable 인터페이스를 구현하는지 확인합니다. 그렇다면 이 인터페이스에서 Equals 메서드를 호출하세요.
// 구현되지 않은 경우 Object에서 Equals 메서드를 호출하여 요소를 비교합니다(즉, 주소 비교)
// 위에서 per3을 삭제했는데, 주소가 있는 것이 확실해서 삭제했습니다

// 다음으로 Person을 수정하고 IEquatable을 구현했습니다. 비교 메서드에서는 항상 false가 반환됩니다. 그러면 per3은 비교에 실패하고 삭제되지 않습니다
// 결과는 모두 3개입니다
// 개체를 삭제하려면 Remove 메서드를 사용하므로 인덱스를 사용하여 직접 삭제하는 것이 가장 좋습니다. 일련의 과정을 거쳐 인덱스에 따라 최종 삭제됩니다.

// A 범위를 삭제하려면 RemoveRange()
//첫 번째 매개변수 시작 위치의 두 번째 숫자
// lists2.RemoveRange( 1, 2);
//Console.WriteLine( "일괄 삭제 후------ -----------");

//foreach (목록에 있는 사람2)
//{
// Console.WriteLine(이름당);
//}


// 6 검색
// 검색하는 방법에는 여러 가지가 있습니다. IndexOf LastIndexOf FindIndex FindLasIndex Find FindLas를 사용하면 요소가 존재하는지 확인하려는 경우 Exists() 메서드를 사용할 수 있습니다.
//IndexOf() 메서드에는 개체가 필요합니다. 매개변수에 도달하면 컬렉션에 있는 요소의 인덱스를 반환합니다. 찾을 수 없으면 -1을 반환합니다. IndexOf는 IEquatable 인터페이스를 사용하여 요소를 비교할 수도 있습니다

List(10);

Person person1 = new Person("aladdin", 100);
Person person2 = new Person("zhao ", 100);
Person person3 = new Person("jacky", 100);

ls3.Add(person1);
ls3.Add(person2);
ls3.Add(person3);

// 기본 주소 비교를 사용하기 위해 Person 인터페이스를 일시적으로 제거합니다
int index = ls3.IndexOf(person3);
Console.WriteLine( "index of per3 :" + index) / /2
// 세 번째부터 시작하도록 검색 범위를 지정할 수도 있습니다. 범위 길이는 1
int index2 = ls3.IndexOf(person3,2,1);
Console .WriteLine( index2);
//IEquatable 비교 방법은 이전에 작성되었으므로 예제는 제공되지 않습니다

//FindIndex() 메서드는 특정 특성을 가진 요소를 검색하는 데 사용됩니다
// 예 대리자를 매개변수로 사용 public 대리자 bool Predicate(T obj);

int index3 = ls3.FindIndex(param => param.name.Equals("jacky"));
콘솔. WriteLine( index3 );// 2
// FindLastIndex는 뒤에서 나오는 첫 번째 요소를 검색합니다. 여기에는 반복되는 요소가 없으므로 하나만 찾고 중지하는 효과는 반영되지 않습니다.
int index4 = ls3.FindLastIndex(p => p.name.Equals("aladdin"));
Console.WriteLine(index4);
//Find 메서드는 FindIndex 메서드와 동일하게 사용되며, 차이점은 반환되는 것은 요소 자체라는 것입니다
Person ppp = ls3.Find( p => p.name.Equals("jacky")) ;
Console.WriteLine(ppp);

// 일치하는 모든 요소를 ​​찾으려면 첫 번째 항목을 찾을 때 중지하는 대신 FindAll 메서드를 사용합니다.
// 연령이 100과 같고 그 중 3개가 일치하는 모든 개체를 찾습니다.
List newList = ls3.FindAll(p => p.age == 100);

Console.WriteLine( "---------모두 찾기--- -----");

foreach(newList의 개인 p)
{
Console.WriteLine(p.name);
}


// 7 정렬
// 목록은 Sort 메서드를 사용하여 정렬할 수 있으며 구현 알고리즘은 빠른 정렬입니다
//이 메서드에는 여러 오버로드가 있습니다

//public void Sort(); /요소 메소드에 IComparable을 구현한 경우에만 사용할 수 있으며, 구현한 경우 직접 sort를 한 번 호출하면 순서가 정렬됩니다.
//public void Sort(Comparison 비교) //Our Person 해당 인터페이스를 구현하지 않으므로 유형 위임을 매개변수로 사용하는 일반 메소드를 사용해야 합니다
//public void Sort(IComparer 비교자) //일반 인터페이스를 매개변수로 사용 public 위임자 int Comparison(T x , T y);
//public void Sort(int index, int count, IComparer 비교자); //범위를 지정할 수 있습니다

List ls4 = new List ;(10);

Person person4 = new Person("aladdin", 100);
Person person5 = new Person("zhao", 33);
Person person6 = new Person(" jacky", 44);

ls4 .Add(person4);
ls4.Add(person5);
ls4.Add(person6);

ls4.Sort(MyComparFunc );
Console.WriteLine( "--- ----------정렬-------------");

foreach(사람 p in ls4)
{
Console .WriteLine(p.name+ p.age );
}

Console.WriteLine( "---------순서를 반대로-- ------------ ----");
ls4.Reverse();

foreach(ls4의 개인 p)
{
콘솔. WriteLine(p.name+p.age);
}


// 8 유형 변환
//컬렉션의 요소를 모든 유형의 요소로 변환할 수 있습니다. 예를 들어 컬렉션의 Person을 Racer 개체로만 변환하려고 합니다. 이름 및 나이 없음
// 공개 List ConvertAll(Converter 변환기);
// 공개 위임 TOutput Converter(TInput 입력);
List ; ls5 = ls4.ConvertAll((input) => new Racer(input.name)) ;

Console.WriteLine( "--------- --변환된 항목---------");
foreach(Racer r in ls5)
{
Console.WriteLine(r.name);
}


// 9 읽기 전용 컬렉션
// 컬렉션이 생성된 후에는 읽기 및 쓰기가 가능해야 합니다. 그러나 그렇지 않은 경우 새 요소를 추가할 수 없습니다. 채워져 있으면 수정하지 마세요.
// 읽기 전용 컬렉션을 사용할 수 있으며, List 작업과 동일한 ReadOnlyCollection 그러나 컬렉션을 수정하는 작업이 있으면 예외가 발생합니다
// 일반적인 ADD 및 기타 메서드를 차단합니다

ReadOnlyCollection persss = ls5.AsReadOnly();

Console.WriteLine("읽기 전용 컬렉션 출력");

foreach(persss의 Racer r)
{
Console.WriteLine(r.name);
}

Console.ReadLine();

}

//비교를 위해 작성된 위임 구현 방법
public static int MyComparFunc(Person p1, Person p2)
{
if (p1.age == p2.age)
{
return 0;
}
else if (p1.age > p2.age)
{
return 1;
}
else
{
return -1;
}
}
}

//두 개의 도우미 클래스
class Person //:IEquatable
{
public string name;
public int age;

public Person( string name, int age)
{
this.name = name;
this.age = age; >
////항상 False 값을 제공합니다

//public bool Equals(Person other)

//{
// false를 반환합니다. ;
//}

}

class Racer

{

공개 문자열 이름;

공개 Racer(문자열 이름)

{

this.name= name;
}
}
}



C# 일반 목록 List

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
C# 및 .NET 런타임 : 함께 작동하는 방법C# 및 .NET 런타임 : 함께 작동하는 방법Apr 19, 2025 am 12:04 AM

C# 및 .NET 런타임은 개발자가 효율적이고 강력하며 크로스 플랫폼 개발 기능을 강화하기 위해 긴밀히 협력합니다. 1) C#은 .NET 프레임 워크와 완벽하게 통합하도록 설계된 유형 안전 및 객체 지향 프로그래밍 언어입니다. 2) .NET 런타임은 C# 코드 실행을 관리하고, 쓰레기 수집, 유형 안전 및 기타 서비스를 제공하며, 효율적이고 크로스 플랫폼 운영을 보장합니다.

C# .NET 개발 : 시작에 대한 초보자 안내서C# .NET 개발 : 시작에 대한 초보자 안내서Apr 18, 2025 am 12:17 AM

C# .NET 개발을 시작하려면 다음과 같은 것이 필요합니다. 1. C#의 기본 지식과 .NET 프레임 워크의 핵심 개념을 이해하십시오. 2. 변수, 데이터 유형, 제어 구조, 기능 및 클래스의 기본 개념을 마스터하십시오. 3. LINQ 및 비동기 프로그래밍과 같은 C#의 고급 기능을 배우십시오. 4. 일반적인 오류에 대한 디버깅 기술 및 성능 최적화 방법에 익숙해 지십시오. 이러한 단계를 통해 C#.NET의 세계를 점차적으로 침투하고 효율적인 응용 프로그램을 작성할 수 있습니다.

C# 및 .NET : 둘 사이의 관계 이해C# 및 .NET : 둘 사이의 관계 이해Apr 17, 2025 am 12:07 AM

C#과 .NET의 관계는 분리 할 수 ​​없지만 같은 것은 아닙니다. C#은 프로그래밍 언어이며 .NET은 개발 플랫폼입니다. C#은 코드를 작성하고 .NET의 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행되는 데 사용됩니다.

C# .NET의 지속적인 관련성 : 현재 사용법을 살펴보십시오.C# .NET의 지속적인 관련성 : 현재 사용법을 살펴보십시오.Apr 16, 2025 am 12:07 AM

C#.NET은 여러 응용 프로그램 개발을 지원하는 강력한 도구 및 라이브러리를 제공하기 때문에 여전히 중요합니다. 1) C#은 .NET 프레임 워크를 결합하여 개발 효율적이고 편리하게 만듭니다. 2) C#의 타입 안전 및 쓰레기 수집 메커니즘은 장점을 향상시킵니다. 3) .NET은 크로스 플랫폼 실행 환경과 풍부한 API를 제공하여 개발 유연성을 향상시킵니다.

웹에서 데스크톱으로 : C# .NET의 다양성웹에서 데스크톱으로 : C# .NET의 다양성Apr 15, 2025 am 12:07 AM

C#.NETISVERSATILEFORBOTHWEBBANDDESKTOPDEVENTROMMENT.1) FORWEB, useASP.NETFORRICHINTERFACES.3) FORDESKTOP.3) USEXAMARINFORCROSS-PLATFORMDEEVENTRIMMENT, LINABILEDEV, MACODEDEV, and MACODEDOWS, 및 MACODEDOWS.

C# .net 및 미래 : 신기술에 적응C# .net 및 미래 : 신기술에 적응Apr 14, 2025 am 12:06 AM

C# 및 .NET는 지속적인 업데이트 및 최적화를 통해 신흥 기술의 요구에 적응합니다. 1) C# 9.0 및 .NET5는 레코드 유형 및 성능 최적화를 소개합니다. 2) .NETCORE는 클라우드 네이티브 및 컨테이너화 된 지원을 향상시킵니다. 3) ASP.NETCORE는 최신 웹 기술과 통합됩니다. 4) ML.NET는 기계 학습 및 인공 지능을 지원합니다. 5) 비동기 프로그래밍 및 모범 사례는 성능을 향상시킵니다.

c# .net이 당신에게 적합합니까? 적용 가능성을 평가합니다c# .net이 당신에게 적합합니까? 적용 가능성을 평가합니다Apr 13, 2025 am 12:03 AM

C#.netissuitable forenterprise-levelapplications는 richlibraries, androbustperformance, 그러나 itmaynotbeidealforcross-platformdevelopmentorwhenrawspeediscritical, wherelanguagesslikerustorthightordogrordogrognegrognegrognegrognecross-platformdevelopmentor.

.NET 내의 C# 코드 : 프로그래밍 프로세스 탐색.NET 내의 C# 코드 : 프로그래밍 프로세스 탐색Apr 12, 2025 am 12:02 AM

.NET에서 C#의 프로그래밍 프로세스에는 다음 단계가 포함됩니다. 1) C# 코드 작성, 2) 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행됩니다. .NET에서 C#의 장점은 현대적인 구문, 강력한 유형 시스템 및 .NET 프레임 워크와의 긴밀한 통합으로 데스크탑 응용 프로그램에서 웹 서비스에 이르기까지 다양한 개발 시나리오에 적합합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경