유니티에서 Foreach 를 실행시 Garbage를 생성시키는것을 피하기위해서 주로 사용 했었는데, 근래에는 Foreach를 사용해도 Garbage를 생성 하지 않는다 한다.
다음목표
- IEnumerable 를 어떤 케이스에서 쓰는게 효율적일지 생각해보자.
- Linq 는 어떤 상황일때 쓰는게 좋을지 생각해보자.
using UnityEngine; using System.Collections; using System.Collections.Generic; // IEnumerable 쓰려고. using System.Linq; public class Bong9_Enumerable : MonoBehaviour { // Use this for initialization void Start () { /// /// string 객체에는 IEnumerable 인터페이스가 구현 되어있다. /// string[] strList = { "bong9", "bong8", "bong7", "b09", "b08", "b07" }; // 구현. Debug.Log("------IEnumerable() Start ------"); IEnumerable(strList); Debug.Log("------IEnumerable() End ------"); // Linq 사용. Debug.Log("------IEnumerable_Linq() Start ------"); IEnumerable_Linq(strList); Debug.Log("------IEnumerable_Linq() End ------"); } void IEnumerable_Linq(string[] strList) { // 조건 : 글자수가 3개 이하. IEnumerable enumerable = from str in strList where str.Length <= 3 select str; IEnumerator e = enumerable.GetEnumerator(); while (e.MoveNext()) { Debug.Log(e.Current); } } void IEnumerable(string[] strList) { IEnumerator e = strList.GetEnumerator(); while (e.MoveNext()) { Debug.Log(e.Current); } // Debug.Log(e.Current); // 이미 열거가 완료되어 에러. e.Reset(); // 열거 초기화. e.MoveNext(); Debug.Log(e.Current + "열거 초기화 후 다시 출력."); } // Update is called once per frame void Update () { } }