C#의 foreach 순회 사용에 대한 심층적인 이해
C#에서 foreach를 통한 목록 순회는 자주 사용하는 방법이며 사용하기도 편리합니다. 다음 글에서는 먼저 C#에서 foreach 순회를 사용하는 방법을 소개한 다음, foreach를 사용할 때 주의해야 할 몇 가지 사항을 소개합니다. C# 기사에서는 샘플 코드를 통해 자세히 소개하고 있으며, 필요한 친구는 아래에서 살펴볼 수 있습니다.
머리말
이 글에서는 주로 C#의 foreach 순회 사용법과 C#의 foreach 사용에 대해 알아야 할 몇 가지 사항을 소개하며 참고 및 학습을 위해 공유합니다. 자세한 소개:
1. C#의 foreach 순회 사용법
foreach 루프는 컬렉션의 모든 요소를 나열하는 데 사용됩니다. foreach 문의 표현식은 구분된 두 항목으로 구성됩니다. in이라는 키워드로 in의 오른쪽 항목은 컬렉션 이름이고, 왼쪽 항목은 컬렉션의 각 요소를 저장하는 데 사용되는 변수 이름입니다.
이 루프의 작업 프로세스는 다음과 같습니다. 루프를 돌릴 때마다 집합에서 새 요소 값을 꺼냅니다. 읽기 전용 변수에 넣습니다. 괄호 안의 전체 표현식이 true를 반환하면 foreach 블록의 문이 실행될 수 있습니다. 컬렉션의 모든 요소에 액세스하고 전체 식이 false로 평가되면 foreach 블록 다음의 실행 문으로 제어가 흐릅니다.
foreach 문은 배열과 함께 자주 사용됩니다. 다음 예에서는 foreach 문을 통해 배열의 값을 읽고 표시합니다.
배열의 속성: Array.Length 배열의 용량
이 속성을 사용하면 배열 개체가 저장할 수 있는 용량 값, 즉 배열의 길이와 개수를 얻을 수 있습니다. 이것은 이해하기 더 쉽고 배열의 크기와 같은 다른 속성도 있습니다. 속성의 사용법은 비교적 간단합니다. 일단 하나를 배우면 다른 형식은 기본적으로 동일합니다. 여기서는 예제를 제공하지 않습니다.
배열의 크기와 용량이 큰 경우 C#에서는 컬렉션/배열의 모든 요소를 읽는 데 특별히 사용되는 foreach 문을 제공합니다. 이 함수를 순회라고 합니다. 구문은 다음과 같이 작성됩니다.
배열 탐색: foreach (컬렉션/배열에 objName 입력)
배열에 저장된 변수 값을 하나씩 확인하여 하나씩 꺼내는 명령문입니다. type은 읽어오려는 배열 객체의 데이터 타입이 objName 변수에 저장되며, objName은 컬렉션과 배열(컬렉션/배열)에서 얻은 각 요소를 나타내는 type type의 변수 이름을 정의합니다. 컬렉션/배열은 액세스할 배열 개체입니다. 이런 방식으로 가변 배열을 제외한 모든 차원의 배열을 탐색하려면 foreach만 작성하면 됩니다.
참고: objName의 데이터 유형은 컬렉션/배열 개체의 유형과 같거나 커야 합니다.
아래에서는 foreach 및 for를 사용하여 규칙 배열을 순회하는 예를 제공합니다. 여기에는 배열의 크기를 얻는 방법이 포함되며 규칙 배열을 한 번에 순회할 때 foreach의 장점을 비교합니다.
int[,,] a = new int[2, 2, 2] { {{ 1, 2 }, { 3,4}},{{ 5, 6 }, { 7,8}} };// 定义一个2行2列2纵深的3维数组a for (int i = 0; i < a.GetLength (0) ;i++ ) //用Array.GetLength(n)得到数组[0,1,,,n]上的维数的元素数,0代表行,1列,n代表此数组是n+1维 { for (int j = 0; j < a.GetLength(1); j++) { for (int z = 0; z < a.GetLength(2);z++ )//2代表得到纵深上的元素数,如果数组有n维就得写n个for循环 { Console.WriteLine(a[i,j,z]); } } }
foreach 루프를 사용하여 a 배열을 한 번에 순회
int[,,] a = new int[2, 2, 2] { {{ 1, 2 }, { 3,4}},{{ 5, 6 }, { 7,8}} };//定义一个2行2列2纵深的3维数组a foreach(int i in a) { Console .WriteLine (i); }
이 두 코드의 실행 결과는 동일합니다. 행당 요소가 하나씩, 총 8행이고, 요소는 1 2 3 4 5 6 7 8
for 및 foreach 루프를 사용하여 배열 요소에 액세스하는 예입니다. 먼저 사용자에게 학생 수를 입력하라는 메시지가 표시됩니다. of Students는 학생 이름을 저장하는 배열로 사용됩니다. 이름의 요소 수에 대해 for 루프를 사용하여 배열의 인덱스 i에 따라 0부터 시작하는 루프에서 "학생 이름 입력" 프롬프트를 출력합니다. , 사용자가 입력한 학생 이름은 배열의 인덱스에 따라 계산됩니다names[i]
存储在names数组中,for循环次数的最大值(即索引的最大值)通过数组属性.Length
得到,我们说过容量与索引之间的关系是index=Array.Length-1
. 이 질문은 i의 최대값입니다.
다음에 유의해야 합니다. foreach를 사용하면 배열의 요소를 하나씩 변경해야 하며 이 문을 사용하여 배열에 저장된 요소를 변경할 수 없습니다.
using System; class Program { static void Main() { int count; Console.WriteLine("输入要登记的学生数"); count = int.Parse(Console.ReadLine()); string[]names = new string[count]; for (int i = 0; i < names.Length; i++) { Console.WriteLine("请输入第{0}个学生的姓名", i + 1); names[i] = Console.ReadLine(); } Console.WriteLine("已登记的学生如下"); foreach (string name in names) { Console.WriteLine("{0}", name); } Console.ReadKey(); } }
2. C#에서 foreach를 사용할 때 알아야 할 사항
C#에서 foreach를 통해 목록을 순회하는 방법도 자주 사용하는 방법입니다. 와 동일한 성능은 큰 차이가 없는데 왜 주의를 기울여야 합니까? 먼저 다음 문장을 살펴보겠습니다. 할당된 메모리 양과 테스트를 완료하는 데 필요한 시간 사이에는 직접적인 관계가 있습니다. 단독으로 보면 메모리 할당 비용이 그리 비싸지 않습니다. 그러나 메모리 시스템이 사용하지 않는 메모리를 가끔씩만 정리하는 경우 문제가 발생하며, 문제의 빈도는 할당되는 메모리 양에 비례합니다. 따라서 더 많은 메모리를 할당할수록 메모리가 더 자주 가비지 수집되고 코드 성능이 저하됩니다.
从上面那些话可以看到内存的回收是非常损耗资源,那我们再看下一些.net内部类型的实现。
Array:
// System.Array public IEnumerator GetEnumerator() { int lowerBound = this.GetLowerBound(0); if (this.Rank == 1 && lowerBound == 0) { return new Array.SZArrayEnumerator(this); } return new Array.ArrayEnumerator(this, lowerBound, this.Length); }
List
// System.Collections.Generic.List<T> public List<T>.Enumerator GetEnumerator() { return new List<T>.Enumerator(this); }
Dictionary
// System.Collections.Generic.Dictionary<TKey, TValue> public Dictionary<TKey, TValue>.Enumerator GetEnumerator() { return new Dictionary<TKey, TValue>.Enumerator(this, 2); }
从以上代码来看,我们再进行foreach操作以上对象的时候都会构建一个Enumerator;也许有人会认为这点东西不需要计较,不过的确很多情况是不用关心;但如果通过内存分析到到的结果表明构建Enumerator的数量排在前几位,那就真的要关心一下了。很简单的一个应用假设你的应用要处理几W的并发,而每次都存在几次foreach那你就能计算出有多少对象的产生和回收?
看下一个简单的分析图,这里紧紧是存在一个List'1如果组件内部每个并发多几个foreach又会怎样?
改成for的结果又怎样呢
总结
위 내용은 C#의 foreach 순회 사용에 대한 심층적인 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











1. Iterator와 foreach의 차이점은 다형성 차이입니다(foreach의 맨 아래 레이어는 Iterator입니다). Iterator는 인터페이스 유형이므로 컬렉션 유형이나 배열에 관심이 없습니다. for와 foreach 모두 컬렉션 유형을 알아야 합니다. 1. foreach의 최하위 레이어가 Iterator에 의해 작성된 코드라고 말하는 이유: 디컴파일된 코드: 2. foreach와 iterator에서 제거의 차이점을 살펴보세요. Alibaba Java Development Manual, 그러나 1번의 경우에는 오류가 보고되지 않으며, 2번의 경우(java.util.ConcurrentModificationException) 먼저 오류가 보고됩니다.

PHP가 foreach 루프 수를 결정하는 단계: 1. "$fruits" 배열을 만듭니다. 2. 초기 값이 0인 카운터 변수 "$counter"를 만듭니다. 3. "foreach"를 사용하여 루프를 만듭니다. 배열을 통해 루프 본문의 카운터 변수 값을 늘린 다음 각 요소와 해당 인덱스를 출력합니다. 4. "foreach" 루프 외부에 카운터 변수 값을 출력하여 루프가 도달하는 요소를 확인합니다.

오늘날 인공지능(AI) 기술 개발은 본격화되고 있으며, 다양한 분야에서 큰 잠재력과 영향력을 보여주고 있습니다. 오늘 Dayao는 여러분에게 몇 가지 참고 자료를 제공하고자 4개의 .NET 오픈 소스 AI 모델 LLM 관련 프로젝트 프레임워크를 공유할 것입니다. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel은 OpenAI, Azure와 같은 대규모 언어 모델(LLM)을 통합하도록 설계된 오픈 소스 소프트웨어 개발 키트(SDK)입니다.

이 기사에서는 키 값을 뒤집은 후 PHP가 배열을 반환하는 방법을 자세히 설명합니다. 편집자는 이것이 매우 실용적이라고 생각하므로 이 기사를 읽고 뭔가를 얻을 수 있기를 바랍니다. PHP 키 값 뒤집기 배열 키 값 뒤집기는 배열의 키와 값을 교환하여 원래 키를 값으로, 원래 값을 키로 사용하여 새 배열을 생성하는 배열 작업입니다. 구현 방법 PHP에서는 다음 방법을 통해 배열의 키-값 뒤집기를 수행할 수 있습니다. array_flip() 함수: array_flip() 함수는 키-값 뒤집기 작업에 특별히 사용됩니다. 배열을 인수로 받고 키와 값이 교환된 새 배열을 반환합니다. $original_array=[

이 기사에서는 PHP가 반환하는 배열의 현재 요소에 대해 자세히 설명할 것입니다. 편집자는 이것이 매우 실용적이라고 생각하므로 이 기사를 읽고 뭔가를 얻을 수 있기를 바랍니다. PHP 배열의 현재 요소 가져오기 PHP는 배열의 현재 요소 가져오기를 포함하여 배열에 액세스하고 조작하기 위한 다양한 방법을 제공합니다. 다음은 일반적으로 사용되는 몇 가지 기술을 소개합니다. 1. current() 함수 current() 함수는 배열의 내부 포인터가 현재 가리키는 요소를 반환합니다. 포인터는 처음에 배열의 첫 번째 요소를 가리킵니다. 다음 구문을 사용하십시오. $currentElement=current($array);2.key() 함수 key() 함수는 현재 요소를 가리키는 배열 내부 포인터를 반환합니다.

차이점: 1. for는 인덱스를 통해 각 데이터 요소를 반복하는 반면 forEach는 JS 기본 프로그램을 통해 배열의 데이터 요소를 반복합니다. 2. for는 break 키워드를 통해 루프 실행을 종료할 수 있지만 forEach는 그렇지 않습니다. for는 루프 변수의 값을 제어하여 루프 실행을 제어할 수 있지만 forEach는 루프 외부에서 루프 변수를 호출할 수 없지만 forEach는 루프 외부에서 루프 변수를 호출할 수 없습니다. forEach보다 높습니다.

.NET 개발자라면 고품질 소프트웨어 제공에 있어 기능과 성능 최적화의 중요성을 인식해야 합니다. 제공된 리소스를 전문적으로 활용하고 웹 사이트 로드 시간을 줄임으로써 사용자에게 즐거운 경험을 선사할 뿐만 아니라 인프라 비용도 절감할 수 있습니다.
