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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

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

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

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

C#은 Microsoft가 개발 한 최신 객체 지향 프로그래밍 언어이며 .NET 프레임 워크의 일부로 개발되었습니다. 1.C#은 캡슐화, 상속 및 다형성을 포함한 객체 지향 프로그래밍 (OOP)을 지원합니다. 2. C#의 비동기 프로그래밍은 응용 프로그램 응답 성을 향상시키기 위해 비동기 및 키워드를 기다리는 키워드를 통해 구현됩니다. 3. LINQ를 사용하여 데이터 컬렉션을 간결하게 처리하십시오. 4. 일반적인 오류에는 NULL 참조 예외 및 인덱스 외 예외가 포함됩니다. 디버깅 기술에는 디버거 사용 및 예외 처리가 포함됩니다. 5. 성능 최적화에는 StringBuilder 사용 및 불필요한 포장 및 Unboxing을 피하는 것이 포함됩니다.

C#.NET 애플리케이션에 대한 테스트 전략에는 단위 테스트, 통합 테스트 및 엔드 투 엔드 테스트가 포함됩니다. 1. 단위 테스트를 통해 MSTEST, NUNIT 또는 XUNIT 프레임 워크를 사용하여 코드의 최소 단위가 독립적으로 작동합니다. 2. 통합 테스트는 일반적으로 사용되는 시뮬레이션 된 데이터 및 외부 서비스를 결합한 여러 장치의 기능을 확인합니다. 3. 엔드 투 엔드 테스트는 사용자의 완전한 작동 프로세스를 시뮬레이션하며 셀레늄은 일반적으로 자동 테스트에 사용됩니다.

C# 수석 개발자와의 인터뷰에는 비동기 프로그래밍, LINQ 및 .NET 프레임 워크의 내부 작업 원리와 같은 핵심 지식을 마스터하는 것이 필요합니다. 1. 비동기 프로그래밍은 비동기를 통해 작업을 단순화하고 응용 프로그램 응답 성을 향상시키기 위해 기다리고 있습니다. 2.linq는 SQL 스타일로 데이터를 운영하고 성능에주의를 기울입니다. 3. Net Framework의 CLR은 메모리를 관리하며 가비지 컬렉션은주의해서 사용해야합니다.

C#.NET 인터뷰 질문 및 답변에는 기본 지식, 핵심 개념 및 고급 사용이 포함됩니다. 1) 기본 지식 : C#은 Microsoft가 개발 한 객체 지향 언어이며 주로 .NET 프레임 워크에 사용됩니다. 2) 핵심 개념 : 위임 및 이벤트는 동적 바인딩 방법을 허용하고 LINQ는 강력한 쿼리 기능을 제공합니다. 3) 고급 사용 : 비동기 프로그래밍은 응답 성을 향상시키고 표현 트리는 동적 코드 구성에 사용됩니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

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

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

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

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는
