inflearn logo
강의

講義

知識共有

[C#とユニティで作るMMORPGゲーム開発シリーズ] Part1: C#基礎プログラミング入門

練習問題

겟인덱스를 foreach가 아니라 for로 구현 한 이유가 뭔가요?

解決済みの質問

546

lular1839

投稿した質問数 7

0

사소한 질문이긴 한데... 애당초 인덱스를 반환하는게 목표니까 굳이 foreach를 사용하지 않는다고 하셨는데 이유가 뭔가요?

차이를 잘 모르겠어요.

C#

回答 3

3

Rookiss

안녕하세요 ㅎㅎ

GetIndexOf의 요구 기능을 잘못 이해하신 것 같네요.
GetIndexOf는 [value라는 데이터가 scores라는 배열의 몇 번째에 위치해 있는지 (없으면 -1)] 반환하는 기능입니다.
위에 작업하신 코드에서 value를 찾았을 경우return value로  반환을 하셨는데,
그건 어디까지나 value라는 값 자체를 반환한거지,
[몇 번째] 데이터인지에 해당하는 정보가 아닙니다!

감사합니다.

2

Rookiss

안녕하세요,

for이나 foreach나 결과가 똑같으면 장땡이고
특별히 어떤 쪽을 선택한다고 문제가 되진 않습니다.

다만, 일반적으로 가독성 측면에서

for (int i = 0; i < len; i++)
{
    int score = scores[i];
}

보다는

foreach (int score in scores)

형태가 더 보기 좋긴 하죠!

따라서 예제에서 대부분의 기능들을 foreach로 만들었지만,
예외적으로 Index를 반환하는 함수는 [몇번째 데이터인지]를 반환해야 합니다.
만약 foreach를 사용했다고 치면, 다음과 같이 구현해야 합니다.

int index = -1;
foreach (int s in scores)
{
   index++;
   if (s == value)
       return index;
}

근데 어차피 이렇게 foreach 안에서 또 카운팅을 할거라면,
그냥 for (int i = 0; i < len; i++)을 이용하는게 속이 편하니 for문을 이용하겠하다는 의미였습니다.

0

lular1839

빠른 답변 감사합니다 ㅎㅎ

static int GetIndexOf(int[] scores, int value)

{

foreach ( int score in scores)

{

if(value == score)

return value;

}

return -1;

}

처음 숙제 풀 때 이렇게 만들었는데 

이러면 i 값으로 몇 번째 인덱스인지 쉽게 찾을 수 없어서 언젠간 곤란해질 거란 말씀이시죠?

그러니까 인덱스류는 for문이 좋다... 맞나요? 제대로 이해한 건지 모르겠네요 ㅋㅋㅠ

Generic에 대한 질문 있습니다.

0

97

2

2022 버전에 커뮤니티 버전이 없는데 2026 버전으로 해도 무관?

0

203

2

다형성 캐시 문제

0

113

3

.

0

71

1

프로퍼티 강의 질문 있습니다.

0

79

1

이후 커리 질문

0

86

1

static

0

91

2

강의에는 새로운 클래스 파일을 생성하면...

0

72

1

생성자의 이름 선언

0

65

1

9:03 Divide(10 , 3) 부분 질문입니다

0

88

1

깃허브 관련 질문 있습니다.

0

239

1

비쥬얼 스튜디오 업데이트가 된건가요..? 매개변수 오류 관련 질문

0

249

1

C# 시리즈 || C++ 시리즈 자료구조 강의에 대한 질문입니다!

0

306

2

Activator 질문있습니다

0

332

1

이넘 타임 선언 질문

0

347

1

Sort 오름차순, 내림차순

0

323

1

질문 있습니다.

0

249

1

팩토리얼 문제

0

270

1

Sort함수 질문있습니다.

0

265

1

다형성 함수 질문 있습니다.

0

221

1

질문이 있습니다.

0

228

1

섹션2 연습문제 질문입니다.

0

214

1

안녕하세요~서버에 대해 질문이 있습니다.

1

283

1

텍스트 색깔이 제 편집기와 달라서 수강에 어려움이 있습니다ㅜㅜ

0

395

1