C\#교체 기 및 Unity 프로 세 스 인 스 턴 스 분석
1.1 IEnumerable 과 IEnumerator
C\#의 교체 기 는 IEnumerable 과 IEnumerator 와 그들의 일반적인 인터페이스 에 봉 인 됩 니 다.
IEnumerable:IEnumerator 를 가 져 올 수 있 는 방법 인 GetEnumerator()를 정의 합 니 다.
//IEnumerable
public interface IEnumerable
{
IEnumerator GetEnumerator();
}
IEnumerator:데이터 가 필요 하지 않 을 때 까지 목표 시퀀스 에서 순환 교 체 를 실현 합 니 다.흔히 볼 수 있 는 foreach 순환 은 이 인 터 페 이 스 를 사용 하 는 것 입 니 다.
//IEnumerator
public interface IEnumerator
{
/// <summary>
/// ( )
/// </summary>
object Current { get; }
/// <summary>
///
/// </summary>
/// <returns> </returns>
bool MoveNext();
/// <summary>
///
/// </summary>
void Reset();
}
그런데 왜 인터페이스 가 두 개 있 지?왜 IEnumerable 에 게 모든 방법 을 직접 실현 시 키 지 않 습 니까?단일 직책 원칙 에 어 긋 나 지 않도록만약 몇 개의 포 레 치 순환 이 있다 면,서로 영향 을 받 을 수 있 을 것 이다.
1.2 교체 기 사용
C\#의 배열 과 집합 은 모두 IEnumerable 인 터 페 이 스 를 계승 하기 때문에 우 리 는 직접 사용 할 수 있 습 니 다.
static void Main(string[] args)
{
int[] arr = new int[5] { 12, 65, 749, 16, 49 };
//foreach (int item in arr)
//{
// Console.WriteLine(item);
//}
#region foreach
IEnumerator e = arr.GetEnumerator(); //
while (e.MoveNext()) // , false
{
Console.WriteLine(e.Current); //
}
#endregion
}
사용자 정의 클래스 에서 교체 기 를 사용 합 니 다.
/// <summary>
/// ,
/// </summary>
public class Zoo : IEnumerable
{
Animal[] animals = new Animal[3];
public Zoo()
{
animals[0] = new Animal(" ");
animals[1] = new Animal(" ");
animals[2] = new Animal(" ");
}
public IEnumerator GetEnumerator()
{
return this.animals.GetEnumerator();
}
}
/// <summary>
/// ,
/// </summary>
public class Animal
{
private string name;
public string Name { get { return name; } }
public Animal(string name)
{
this.name = name;
}
}
static void Main(string[] args)
{
Zoo zoo = new Zoo();
// foreach
foreach (Animal animal in zoo)
{
Console.WriteLine(animal.Name);
}
Console.ReadKey();
}
2.Unity 의 협의 과정2.1 프로 세 스 스 스 레 드 협의 소개
프로 세 스:
스 레 드:
4.567917.스 레 드 는 자신 만 의 독립 된 스 택 과 공 유 된 더미 가 있 고 공유 더미 가 있 으 며 스 택 을 공유 하지 않 습 니 다.스 레 드 는 운영 체제 에 의 해 배 치 됩 니 다
협정:
4.567917.협 정 공유 더미,스 택 을 공유 하지 않 고 협 정 은 프로그래머 가 협 정 된 코드 에 배 치 를 표시 합 니 다4.567917.협 정 은 게임 의 메 인 스 레 드 에서 실행 되 고 같은 시간 에 하나의 협 정 만 수행 할 수 있다4.567917.스 레 드 는 무의미 한 스케줄 링 을 피하 고 성능 을 향상 시 켰 으 나 프로그래머 가 스스로 스케줄 링 책임 을 져 야 한다.
2.2 협정 사용
Unity 의 프로 세 스 시스템 은 C\#의 간단 하고 강력 한 인터페이스,IEnumerator 를 기반 으로 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.