Unity 이론 (소트, IComparer, IComparable, FindAll, yield return)

로젠·2024년 5월 28일
0

게임 프로그래밍

목록 보기
49/49
post-thumbnail

소트

리스트형을 정렬하기 위해서 list.Sort()를 사용하면 소트 할 수 있다.

private void Start()
{	
	List<string> list = new List<string>()
	{
		"Unreal", "Unity", "Lumberyard", "Houndini", "Source", "Vision", "Crytek", "PhyX", "FMOD", "SpeedTree", "Frostbite"
	};
	list.Sort();
}

IComparer

IComparer은 클래스에서 상속받아 사용하는 형식으로 특정 클래스에 대한 비교 연산 행위자를 구현할 때 사용한다.

public class UserCompare : IComparer<User>
{
    public int Compare(User x, User y)
    {
        if (ReferenceEquals(x, y))
            return 0;
        if (x.Id == y.Id) return 0;
        if (x == null) return 1;
        if (y == null) return -1;
        return x.Id < y.Id ? -1 : 1;
    }
}

IComparable

IComparable은 인터페이스를 상속받은 클래스가 비교 연산을 할 수 있게 해준다.

FindAll

FindAll은 조건이 있다면 해당 조건에 만족하는 모든 자료를 리턴해주는 것을 말한다.

private void Start()
{
	List<User> findList = users.FindAll(user => user.Id % 2 == 0);
	Print(findList);
}

yield return

yield return을 사용하면 반복문의 다음 값을 제공해 주는 역할을 한다.

public class BuiltInType : IEnumerable<string>
{
    public IEnumerator<string> GetEnumerator()
    {
        yield return "object";
        yield return "byte";
        yield return "uint";
        yield return "ulong";
        yield return "float";
        yield return "char";
        yield return "bool";
        yield return "ushort";
        yield return "decimal";
        yield return "int";
        yield return "sbyte";
        yield return "short";
        yield return "long";
        yield return "void";
        yield return "double";
        yield return "string";
        for (int i = 0; i < 10; i++)
            yield return i.ToString();
    }
    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

0개의 댓글