• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

어나니머스 타입

22.04.22 23:11 작성 조회수 249

0

            // LINQ 버전 레벨 2배

            {

                var players =

                    from p in _players

                    where p.ClassType == ClassType.Knight && p.Level >= 50

                    orderby p.Level

                    select new { Hp = p.Hp, Level = p.Level * 2 };

 

                Console.WriteLine();

                foreach (Player p in players) // 구문오류

                {                    

                    Console.WriteLine($"직업 : {p.classType}, 레벨 : {p.Level}, Hp : {p.Hp}, 공격력 : {p.Attack}");

                }

            }

14:40 쯤에  select에서 new를 이용하여 레벨을 2배인 상태로 추출이 가능하다고 해서 직접 확인해보려 하니까 잘 안되네요 ㅠㅠ

foreach문에서 구문오류를 확인해보니 'anonymous type: int Hp, int Level형식을  Player형식으로 변환할 수 없다'고 뜨네요. Player형을 쓰면 안된다는 것 같은데. 그러면 어떤 자료형을 써야하는지 감이 안잡힙니다..

Q1) foreach문의 코드를 어떻게 고쳐야 anonymous type을 출력할 수 있을까요? 레벨이 2배로 된 것을 눈으로 확인하고 싶습니다!

답변 1

답변을 작성해보세요.

0

anonymous 타입으로 받아온 players는 말 그대로 익명 타입이지 player가 아닙니다.

 foreach (Player p in players

이렇게 하지 마시고 var p로 바꿔보세요.

물쉬드님의 프로필

물쉬드

질문자

2022.04.23

감사합니다 바로 해결됐네요!