IRONSOFTWAREHOME

C# 배열 이해하기

C# 배열 이해하기: Layla Porter의 C# 배열 및 반복문 관련 영상에서 얻은 통찰

Layla Porter

21분 53초

C#에서 배열은 개발자가 동일한 형식의 요소들을 연속적인 메모리 위치에 저장할 수 있도록 해주는 기본적인 데이터 구조입니다. 배열은 1차원, 다차원 또는 불규칙 배열일 수 있습니다.

이 C# 배열 관련 글은 Layla Porter의 교육 영상 " C# for Beginners Part 5 - Arrays and More Loops"에서 영감을 받았습니다. Layla는 이 영상에서 배열의 기본 개념을 자세히 살펴보고 C#의 다양한 반복 기법을 소개하여 시청자들이 컬렉션을 관리하고 데이터를 효율적으로 순회하는 데 필요한 핵심 기술을 습득할 수 있도록 돕습니다.

배열 이해하기

레이라는 C#에서 배열을 고정 길이 컬렉션으로 설명하는 것으로 시작합니다. 배열의 크기가 동적으로 변경될 수 있는 다른 프로그래밍 언어와 달리, C#의 배열은 한 번 생성되면 변경할 수 없습니다. 이는 메모리 할당 제약으로 인해 초기화 후에는 크기를 변경할 수 없다는 것을 의미합니다.

간단한 콘솔 조작: 좋아하는 치즈 고르기

다음 코드에서 배열과 대조적으로 Layla(1:50)는 먼저 사용자가 선택할 수 있는 항목 목록을 표시하는 방법을 보여줍니다.

Console.WriteLine("Hello, what is your favourite cheese from this list?");
Console.WriteLine("1. Stilton");
Console.WriteLine("2. Cheddar");
Console.WriteLine("3. Pineapple");
Console.WriteLine("4. Brie");
var favouriteCheese = Console.ReadLine();
Console.WriteLine($"Here is a lump of {favouriteCheese} cheese!");

이 코드는 먼저 Console.WriteLine을 사용하여 사용자에게 좋아하는 치즈가 무엇인지 묻는 메시지를 콘sole에 출력합니다. 그런 다음 연속해서 네 번 더 Console.WriteLine을 사용하여 치즈 목록을 콘솔에 출력합니다. 이 코드는 Console.ReadLine을 사용하여 사용자의 입력을 콘솔에서 읽어 와서 변수 favouriteCheese에 저장합니다. 마지막으로, 코드는 Console.WriteLine을 다시 사용하여 사용자 좋아하는 치즈를 포함하는 메시지를 콘솔에 출력합니다.

레이라는 2분 4초에 이 코드를 실행하여 작동 방식을 보여줍니다.

배열 선언 - 배열 초기화

예를 들어, Layla는 문자열 배열을 선언하고 초기화하는 방법을 보여주는 것으로 시작합니다. 이 경우, 배열은 처음에 사용자에게 메뉴로 제시된 치즈 목록입니다. 그녀는 1차원 배열을 정의하는 구문(2:30)과 중괄호를 사용하여 초기값으로 배열을 채우는 구문(2:54)을 소개합니다.

string[] cheeses = { "Brie", "Cheddar", "Stilton", "Gouda" };

그녀는 배열에서 0부터 시작하는 인덱싱의 중요성을 강조합니다. 1차원 배열의 첫 번째 요소는 인덱스 0을 사용하여 접근합니다. 이어서 레일라는 for 루프를 사용하여 배열을 순회하는 방법을 보여줍니다. 이 루프 구조는 특정 조건에 따라 코드를 반복적으로 실행할 수 있게 해주기 때문에 프로그래밍에서 매우 중요합니다.

반복문 구현하기

이제 반복문에 대해 이야기해 보겠습니다. 레이라는 for 반복문의 세 가지 필수 구성 요소인 초기화자, 조건, 그리고 반복자를 소개합니다. 이 반복문은 배열의 길이를 기준으로 배열의 요소들을 순회하는 데 사용됩니다.

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

그녀는 4:44에서 cheeses.Length가 배열의 요소 수를 제공하여 루프가 각 요소를 정확히 반복하도록 보장한다고 강조합니다. 변수 i는 인덱스를 반복하는 인덱스 변수로 작동합니다. 이는 배열 요소에 접근하지 않고 위에서 보여준 대로 Console.WriteLine 메서드를 여러 번 작성하지 않고 개별 배열 요소를 효과적으로 출력합니다. 레이라는 6시 17분에 애플리케이션을 실행하여 이 for 루프의 출력 결과가 이전 예제와 완전히 동일함을 보여줍니다.

정렬과 가변성

레이라는 정렬의 이점을 설명한 후, 7:17에서 Sort 메서드를 사용하여 배열을 알파벳 순서로 정렬하는 것을 시연합니다. 이 때, C#에서 배열의 불변성 때문에 정렬이 사실상 새로운 배열을 뒤에서 생성한다는 점을 주의합니다. 이는 데이터 조작이 메모리와 성능에 미치는 영향을 이해하는 데 있어 매우 중요한 부분입니다.

Array.Sort(cheeses);

그녀는 또한 새 배열을 만들지 않고도 배열 내의 개별 요소를 직접 수정할 수 있는 방법을 보여주며(8:10), 불변성 내의 가변성을 설명합니다. 교체할 요소의 인덱스는 cheeses 배열 변수 뒤에 대괄호 안에 전달됩니다:

cheeses[0] = "Roquefort";

이렇게 하면 배열의 0번째 인덱스에 있는 "Brie" 요소가 새 값 "Roquefort"로 대체됩니다.

치즈 목록 업데이트: 새 항목 처리 (8:46)

레이라는 기존 리스트에 값을 추가하는 방법을 설명합니다. 기존 값과 새 값을 가져와 두 값을 모두 포함하는 새 배열을 만들고, 참조를 이 새 배열을 가리키도록 업데이트하는 과정입니다. 다음 코드는 작동 방식을 보여줍니다.

var favouriteCheese = Console.ReadLine();

bool containsFavourite = false;

foreach (var cheese in cheeses)
{
    if (favouriteCheese == cheese)
    {
        containsFavourite = true;
    }
}

if (!containsFavourite)
{
    cheeses = cheeses.Append(favouriteCheese).ToArray();
}

이 예제는 기본 배열 작업과 foreach 루프를 사용하여 치즈가 목록에 이미 있는지를 확인하는 과정을 간단하게 보여줍니다. 만약 없다면, 레일라는 System.Linq에서 Append 메서드를 사용하여 배열에 추가합니다 (13:33).

레이라는 13:50에 코드가 오류가 발생하는 이유가 cheesesAppend의 결과가 서로 다른 타입이기 때문이라고 말합니다. AppendIEnumerable를 반환하는데, 이는 컬렉션 인터페이스입니다. 이를 해결하기 위해, 우리는 IEnumerable를 배열로 변환하기 위해 ToArray() 메서드를 사용한 후 cheeses에 다시 할당합니다. 레이라는 노란 굽은 선이 favouriteCheese이 null일 수 있다는 잠재적 문제를 나타내는 컴파일러 경고라고 지적하지만, 이 데모에서는 안전 검사들을 무시하고 있습니다.

치즈 목록 업데이트 및 인쇄

레일라는 배열에 새 항목을 추가한 후에는 업데이트된 목록을 화면에 출력해야 한다고 설명합니다. 이를 달성하기 위해, 우리는 for 루프를 사용하여 이제 배열에 더 많은 항목이 포함되었음을 보여주기 위해 각 요소와 인덱스를 나란히 출력합니다.

Console.WriteLine("The new list:");

for (var i = 0; i < cheeses.Length; i++)
{
    Console.WriteLine(i + " " + cheeses[i]);
}

Console.WriteLine($"Here is a lump of {favouriteCheese} cheese!");

이는 C#에서 배열의 동적인 특성을 보여주며, 새 요소를 추가하고 배열 내용을 출력하여 업데이트를 확인하는 방법을 보여줍니다.

레이라는 새로 추가된 치즈를 표시하기 위해 애플리케이션을 실행합니다(15:19).

객체 배열을 활용한 기능 향상

이해를 넓히기 위해, 레일라는 Cheese 클래스와 NameStrength 속성을 만들며, 객체 배열을 소개합니다 (16:14). 그녀는 문자열 목록을 Cheese 객체의 배열을 생성하기 위해 교체한 후, 반복 과정에서 객체 내 속성에 접근하는 방법을 시연합니다 (17:46).

class Cheese
{
    public string Name { get; set; }
    public int Strength { get; set; }

    public Cheese(string name, int strength)
    {
        Name = name;
        Strength = strength;
    }
}

Cheese[] cheeses = new Cheese[]
{
    new Cheese("Stilton", 3),
    new Cheese("Cheddar", 2),
    new Cheese("Pineapple", 1),
    new Cheese("Brie", 2)
};

cheeses[0] = new Cheese("Roquefort", 4);

이 부분에서는 배열이 어떻게 복잡한 데이터 구조를 캡슐화하여 프로그래밍에 유연성과 강력한 기능을 제공하는지에 대한 기본적인 이해를 제공합니다.

치즈 객체를 반복문에서 활용하기

이제 레이라는 업데이트된 목록의 모든 요소를 ​​화면에 출력하는 방법을 보여줍니다. 이 시나리오에서 각 치즈는 NameStrength 속성을 가진 객체로 표현됩니다. for 루프는 Cheese 객체의 배열을 통해 반복하며, 각 반복은 단일 배열 요소를 직접 처리합니다.

for (int i = 0; i < cheeses.Length; i++)
{
    Console.WriteLine($"{cheeses[i].Name}, Strength: {cheeses[i].Strength}");
}

이 루프는 Cheese 객체가 cheeses 배열에 저장된 속성에 대한 접근을 단순화합니다. 레이라는 20시 34분에 프로그램을 실행했고 출력 결과는 다음과 같습니다.

결론

결론적으로, Layla Porter의 C# 배열 및 반복문 튜토리얼은 초보자들이 이러한 필수 개념을 이해하는 데 탄탄한 기초를 제공합니다. 배열과 다양한 반복문 구조를 숙달함으로써, C# 개발자를 꿈꾸는 사람들은 프로그램에서 데이터 구조를 효과적으로 조작하고 컬렉션을 순회할 수 있습니다. 이러한 기본 사항을 이해하는 것은 더욱 복잡한 애플리케이션을 구축하고 C# 프로그래밍의 다양한 측면을 탐구하는 데 매우 중요합니다.

레이라의 예시와 설명을 따라가다 보면 초보자들도 자신의 C# 프로젝트에서 배열과 반복문을 효과적으로 사용하는 데 자신감을 얻을 수 있습니다. C# 컬렉션과 고급 2차원 배열 및 가변 배열에 대한 보다 심층적인 내용은 후속 튜토리얼 및 실습을 참조하시기 바랍니다.

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

OR
bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.