C\#교체 기 및 Unity 프로 세 스 인 스 턴 스 분석

1.C\#교체 기
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.협 정 공유 더미,스 택 을 공유 하지 않 고 협 정 은 프로그래머 가 협 정 된 코드 에 배 치 를 표시 합 니 다4.567917.협 정 은 게임 의 메 인 스 레 드 에서 실행 되 고 같은 시간 에 하나의 협 정 만 수행 할 수 있다4.567917.스 레 드 는 무의미 한 스케줄 링 을 피하 고 성능 을 향상 시 켰 으 나 프로그래머 가 스스로 스케줄 링 책임 을 져 야 한다.
    2.2 협정 사용
    Unity 의 프로 세 스 시스템 은 C\#의 간단 하고 강력 한 인터페이스,IEnumerator 를 기반 으로 합 니 다.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기