inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

C# 프로그래밍 기초

IEnumerable 인터페이스와 foreach문

IEnumerable 강의 따라하는 중 질문합니다.

570

dev zipida

작성한 질문수 10

0

using System;

using System.Collections;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace Exam11_1

{

class Exam11_1

{

public void Run()

{

int[] intArray = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

IEnumerator enumerator = intArray.GetEnumerator();

for (int i = 0; i < intArray.Length; i++) Console.WriteLine(intArray[i]);

}

}

}

도저히 아무리 봐도 저는 왜 아무것도 안 나오는지 모르겠습니다.ㅠㅠ

C#

답변 3

0

이교준

님 소스 그대로 돌려보니 잘 나오는데요?

다만 IEnumerator를 선언한 이유가 없네요. Enumerator를 사용하는 것은 for문이 아니라 foreach와 같이 Enumerator를 사용하는 구문에서 사용하기 위함입니다. 다음 예제를 보면서 공부해 보세요.

 

static void PrintNamesAndAges(IEnumerable<string> names, IEnumerable<int> ages)
{
    using (IEnumerator<int> ageIterator = ages.GetEnumerator())
    {
        foreach (string name in names)
        {
            if (!ageIterator.MoveNext())
            {
                throw new ArgumentException("Not enough ages");
            }
            Console.WriteLine("{0} is {1} years old", name, ageIterator.Current);
        }
        if (ageIterator.MoveNext())
        {
            throw new ArgumentException("Not enough names");
        }

    }
}

0

dev zipida

강의 21분 35초 보고 더 따라했는데도 똑같습니다.ㅠㅠ

 

using System;

using System.Collections;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace Exam11_1

{

class Exam11_1

{

public void Run()

{

TestBasic();

//TestStudent();

}

private void TestStudent()

{

Student[] students = new Student[]

{new Student("홍길동", 89, 1), new Student("황진이", 87, 2)};

IEnumerator enumerator = students.GetEnumerator();

while (enumerator.MoveNext()) Console.WriteLine(enumerator.Current);

}

private void TestBasic()

{

int[] intArray = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

//for (int i = 0; i < intArray.Length; i++) Console.WriteLine(intArray[i]);

//IEnumerator enumerator = intArray.GetEnumerator();

//while (enumerator.MoveNext())

//{

// Console.WriteLine(enumerator.Current);

//}

//foreach()

//foreach (int i in intarray) Console.WriteLine(i);

string str = "abcdefg";

foreach (char c in str) Console.WriteLine(c);

}

}

class Student

{

public string Name { get; set; }

public int Score { get; set; }

public int Id { get; set; }

public Student(string name, int score, int id)

{

Name = name;

Score = Score;

Id = id;

}

public override string ToString()

{

return $"{Name}[{Id}][{Score}]";

}

}

}

 

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.
제작자인 dev zipida님께서 IEnumerable 강의를 따라하시면서 출력이 되지 않는 문제가 있다고 하셨네요.

코드를 살펴보니 Run() 메소드 안에서 intArray 배열의 모든 요소를 출력하려고 하셨습니다. 하지만 현재 코드에서는 IEnumerator를 사용하여 반복문을 구성하지 않고 있어서 출력이 되지 않는 것 같습니다.

해결 방법으로는 IEnumerator 인터페이스를 사용하지 않고 foreach 루프를 사용하여 intArray 배열의 요소를 출력할 수 있습니다. 아래와 같이 코드를 수정해 보세요.

public void Run()
{
    int[] intArray = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

    foreach (var num in intArray)
    {
        Console.WriteLine(num);
    }
}

위의 코드처럼 수정하면 intArray 배열의 모든 요소가 하나씩 출력될 것입니다. 해당 부분을 수정해보시고 원하는 결과가 나오는지 확인해보세요. 문제가 다른 부분이 있다면 알려주세요. 감사합니다.

visual studio 2022 로 수업 들어도 되나요?

0

200

1

저는 왜 영상과 다르게 Hello World만 나올까요?

0

418

3

getter setter 질문입니다.

0

424

2

교수님 C#의 Property에서 setter를 이용한 입력 제한은 어떻게 구현하나요?

0

643

3

메서드 Override1

0

449

3

혹시 이 강의랑 같이 볼만한 책 추천해주실 수 있으실까요?

0

493

2

디렉토리를 처음부터 잘못해서 쭉 잘못 해오고 있었습니다.

0

502

3

빌드되는 경로를 사용자가 지정할 수는 없나요?

0

846

2

수업 중 질문은 어떻게 쓰나요?

0

381

2

지금 4분~8분 내용 보는 중입니다.

0

553

2

기본타입 강의 중 질문입니다.

0

294

1

19:14 실행이 안되고 꺼집니다.

0

1238

1

프레임워크 4.6.1이 없습니다.

0

380

1

람다는 수업 강의에서 안배우는건가요??

0

420

1

Student.cs에서 생성자 질문

0

423

1

질문

0

358

1

교수님이 강의에서 설명하신 내용 중 이해가 가지 않는게 있습니다.

0

318

2

교수님 혹시 강의 때 사용하시는 ppt도 공유해주실 수 있는지요?

0

526

2

double 소문자와 대문자 차이가 뭔가요?

0

514

1

FOREACH문은 다른 회차에 알려주시나요?

0

220

0

동영상 소리가 너무 작아요…

0

581

1

[질문] C# 프로그램 구조2 강의가 누락된 건가요?

0

318

1

MenuArgs를 왜 상속하나요?

0

261

4

인터페이스 질문입니다.

0

357

3