IEnumerable C#

WBOY
풀어 주다: 2024-09-03 15:32:12
원래의
453명이 탐색했습니다.

IEnumerable은 GetEnumerator라는 하나의 메서드만 정의하는 인터페이스입니다. 이 메서드는 IEnumerator 인터페이스를 반환합니다. 이 인터페이스는 익명 유형의 클래스 목록 또는 컬렉션을 반복하는 데 사용됩니다. 여기에는 시스템이 포함되어 있습니다. Collections.Generic 네임스페이스. LINQ 쿼리 표현식 작업에도 사용됩니다. 이렇게 하면 컬렉션에 대한 읽기 전용 액세스만 허용되며, 기본 컬렉션을 상속하는 컬렉션은 for-each 루프를 사용하여 반복될 수 있습니다. IEnumerable 인터페이스는 제네릭이 아닌 모든 목록의 기본 인터페이스입니다. IEnumerable 인터페이스에는 네 가지 확장 방법이 있습니다. AsParallel(), AsQueryable(), Cast(), OfType()입니다. 이번 글에서는 다양한 예시와 함께 IEnumerable 인터페이스에 대해 자세히 설명하겠습니다.

IEnumerable C#의 구문

구문은 다음과 같습니다.

public interface IEnumerable
로그인 후 복사

컬렉션은 movenext() 및 Reset() 메서드를 사용하여 반복됩니다.

IEnumerable C#의 확장 메서드

방법은 다음과 같습니다.

  • Cast(IEnumerable): IEnumerable 인터페이스의 제네릭이 아닌 컬렉션이 언급된 지정된 유형으로 변환됩니다.
  • OfType(IEnumerable): IEnumerable의 요소는 언급된 유형을 기준으로 필터링됩니다.
  • AsParallel(IEnumerable): 병렬 쿼리 실행을 활성화하는 데 사용됩니다.
  • AsQueryable(IEnumerable): IEnumerable 인터페이스를 IQueryable 인터페이스로 변환하는 데 사용됩니다.

IEnumerable C# 구현 예

아래는 예시입니다.

예시 #1

코드:

using System;
using System.Diagnostics;
using System.Reflection;
using System.Collections;
namespace TestEg
{
class Test : IEnumerable
{
Test[] coll = null;
int Fi = 0;
public String Fname { get; set; }
public string lastnme { get; set; }
public Test()
{
coll = new Test[10];
}
public void Add(Test item)
{
coll[Fi] = item;
Fi++;
}
// IEnumerable Member
public IEnumeratorGetEnumerator()
{
foreach (object o in coll)
{
if(o == null)
{
break;
}
yield return o;
}
}
}
class Program
{
public static void Main(String[] args)
{
Test tobj = new Test();
tobj.Fname = "viki";
tobj.lastnme = "krish";
Test tobj1 = new Test();
tobj1.Fname = "nand";
tobj1.lastnme = "viki";
Test myList = new Test();
Test tobj2 = new Test();
tobj2.Fname = "vyapini";
tobj2.lastnme = "viki";
Test tobj3 = new Test();
tobj3.Fname = "tai";
tobj3.lastnme = "viki";
myList.Add(tobj);
myList.Add(tobj1);
myList.Add(tobj2);
myList.Add(tobj3);
foreach (Test obj in myList)
{
Console.WriteLine("Fname:" +  obj.Fname + "\t\t" + "lastnme :" + obj.lastnme);
}
Console.ReadLine();
}
}
}
로그인 후 복사

출력:

IEnumerable C#

예시 #2

코드:

using System;
using System.Diagnostics;
using System.Reflection;
using System.Collections;
public class test : IEnumerable
{
public string Student1 { get; set; }
public string Student2 { get; set; }
public string Student3 { get; set; }
public IEnumeratorGetEnumerator() { return new testEnumerator(this); }
}
public class testEnumerator : IEnumerator
{
public testEnumerator(test ts) { _ts = ts; }
private test _ts;
private int _index = 0;
public void Reset() { _index = 0; Current = null; }
public object Current { get; private set; }
public bool MoveNext()
{
_index++;
/**/ if (_index == 1) { Current = _ts.Student1; return true; }
else if (_index == 2) { Current = _ts.Student2; return true; }
else if (_index == 3) { Current = _ts.Student3; return true; }
else return false;
}
}
class Program
{
public static void Main(String[] args)
{
varts = new test() {Student1 = "vignesh", Student2 = "nandhini", Student3 = "vyapini"};
foreach (string name in ts)
{
Console.WriteLine(name);
}
}
}
로그인 후 복사

출력:

IEnumerable C#

예시 #3

코드:

using System.Linq;
using System.Collections.Generic;
using System;
namespace TestOper
{
public class testclass
{
public inteid { get; set; }
public string ename { get; set; }
public double salary { get; set; }
}
class Program
{
public static void Main()
{
List<testclass>listtestclasss = new List<testclass>
{
new testclass { eid= 1001, ename = "viki", salary = 1000 },
new testclass { eid= 1002, ename = "nandhini", salary = 600 },
new testclass { eid= 1003, ename = "vyapinin", salary = 10000 }
};
Dictionary<int, testclass>empdic = listtestclasss.ToDictionary(x =>x.eid);
foreach (KeyValuePair<int, testclass>kvp in empdic)
{
Console.WriteLine("eid" + kvp.Key + " ename : " + kvp.Value.ename + ", salary: " + kvp.Value.salary);
}
Console.ReadKey();
}
}
}
로그인 후 복사

출력:

IEnumerable C#

예시 #4

코드:

using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
int[] numbers = new int[]
{
1,13,51,75
};
Dictionary<int, bool>dic =
numbers.ToDictionary(v => v, v => true);
foreach (KeyValuePair<int, bool> pair in dic)
{
Console.WriteLine(pair);
}
List<string> names = new List<string>()
{
"vignesh","jagan","nyan","ravi","siva","sethu"
};
var result = names.ToDictionary(x => x, x => true);
if (result.ContainsKey("jagan"))
{
Console.WriteLine("name exists");
}
}
}
로그인 후 복사

출력:

IEnumerable C#

예시 #5

코드:

using System;
using System.Collections.Generic;
using System.Linq;
namespace LINQDemo
{
class Program
{
static void Main(string[] args)
{
List<emp>sl = new List<emp>()
{
new emp(){empid = 1, empname = "James", empgender = "Male",eage=60},
new emp(){empid = 2, empname = "Sara", empgender = "Female",eage=90},
new emp(){empid = 3, empname = "Steve", empgender = "Male",eage=80},
new emp(){empid = 4, empname = "Pam", empgender = "Female",eage=70},
new emp(){empid = 5, empname = "James", empgender = "Male",eage=60},
new emp(){empid = 6, empname = "Sara", empgender = "Female",eage=50},
new emp(){empid = 7, empname = "Steve", empgender = "Male",eage=20},
new emp(){empid = 8, empname = "Pam", empgender = "Female",eage=40}
};
IQueryable<emp>iq = sl.AsQueryable()
.Where(t =>t.eage> 40);
foreach (varemp in iq)
{
Console.WriteLine( $"empid : {emp.empid}  empname : {emp.empname} eage : {emp.eage} empgender : {emp.empgender} ");
}
Console.ReadKey();
}
}
public class emp
{
public intempid { get; set; }
public string empname { get; set; }
public string empgender { get; set; }
public inteage { get; set; }
}
}
로그인 후 복사

출력:

IEnumerable C#

결론

그래서 기사에서는 C#의 IEnumerable에 대해 자세히 설명했습니다. 또한 GetEnumerator와 같은 다양한 메서드와 AsParallel(), AsQueryable(), Cast(), OfType() 등 IEnumerable과 관련된 기타 확장 메서드에 대해 자세히 설명했습니다. 또한 현재, 다음 및 재설정 방법의 사용을 예제로 보여주었습니다. 좀 더 자세히 알아보려면 샘플 프로그램을 작성하고 실습해 보는 것이 좋습니다.

위 내용은 IEnumerable C#의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿