>  기사  >  백엔드 개발  >  C#에서 배열은 어떻게 작동하나요?

C#에서 배열은 어떻게 작동하나요?

WBOY
WBOY앞으로
2023-09-10 09:41:081308검색

数组在 C# 中如何工作?

배열은 특정 유형의 고정된 수의 요소를 나타냅니다. 요소는 인접한 메모리 블록에 저장되며 해당 인덱스를 알고 있는 한 요소에 효율적으로 액세스할 수 있습니다.

배열 선언 및 초기화를 위한 C# 구문은 다음과 같습니다. -

// create a string array to hold 5 languages
string[] languages = new string[3];

배열을 선언한 후 배열의 사각형 기호를 사용하여 배열의 항목을 채울 수 있습니다.

languages[0] = "csharp";
languages[1] = "visual basic";
languages[2] = "f#";

그러나 위의 두 단계를 한 단계로 결합하는 대체 간결한 구문이 있습니다.

string[] languages = new string[] { "csharp", "visual basic", "f#" };

C#에서 암시적으로 유형이 지정된 변수를 사용하면 변수 이름 왼쪽에 있는 유형을 제거하고 var만 사용할 수 있습니다.

var languages = new string[] { "csharp", "visual basic", "f#" };

동일한 정사각형 표기법을 사용하여 배열의 모든 요소에 액세스할 수 있습니다.

string language = languages[0];
Console.WriteLine(language); // prints csharp

배열의 길이 속성은 배열에 있는 항목 수를 알려줍니다.

int count = languages.Length;
Console.WriteLine(count); // 3

배열을 만든 후에는 배열의 길이를 변경할 수 없다는 점을 기억하는 것이 중요합니다. 배열 범위 외부의 요소에 액세스하려고 하면 예외가 발생합니다.

string lang = languages[3]; // throws System.IndexOutOfRangeException

배열을 반복하려면 언어에서 제공하는 for 또는 foreach 루프를 사용하세요.

// for loop
for (int i = 0; i < languages.Length; i++){
   string l = languages[i];
   Console.WriteLine(l); // prints the names of languages in sequence
}
// foreach loop
foreach (string l in languages){
   Console.WriteLine(l); // prints the names of languages in sequence
}

기본값

배열을 만들 때 C# 컴파일러는 요소를 기본값으로 초기화합니다. 예를 들어, 정수 배열을 생성하면 각 요소의 값이 0으로 설정됩니다.

var numbers = new int[3];
foreach (int num in numbers){
   Console.WriteLine(num); // prints 000
}

요소가 값 유형인 경우 해당 유형의 각 멤버에는 기본값이 할당됩니다.

Point[] a = new Point[4];
int x = a[2].X;
Console.WriteLine(x); // prints 0
public struct Point { public int X, Y; }

그러나 참조 유형의 경우 컴파일러는 각 항목에 대해 null 참조를 생성합니다.

User[] u = new User[4];
int y = u[2].Y; // NullReference exception
public class User { public int X, Y; }

이 오류를 방지하려면 아래와 같이 각 항목을 명시적으로 초기화해야 합니다.

User[] users = new User[5];
for (int i = 0; i < users.Length; i++) // Iterate i from 0 to 999
users[i] = new User();

실시간 시연

using System;
class Program{
   static void Main(){
      string[] languages = new string[3]; // create a string array to hold 5 languages
      languages[0] = "csharp";
      languages[1] = "visual basic";
      languages[2] = "f#";
      string[] langugages_two = new string[] { "csharp", "visual basic", "f#" };
      var languages_three = new string[] { "csharp", "visual basic", "f#" };
      string language = languages[0];
      Console.WriteLine(language); // prints csharp
      int count = languages.Length; // 3
      Console.WriteLine(count);
      //string lang = languages[3]; // throws System.IndexOutOfRangeException
      // for loop
      for (int i = 0; i < languages.Length; i++){
         string l = languages[i];
         Console.WriteLine(l); // prints the names of languages in sequence
      }
      // foreach loop
      foreach (string l in languages){
         Console.WriteLine(l); // prints the names of languages in sequence
      }
      var numbers = new int[3];
      foreach (int num in numbers){
         Console.WriteLine(num); // prints 000
      }
      Point[] a = new Point[4];
      int x = a[2].X;
      Console.WriteLine(x); // prints 0
      User[] u = new User[4];
      //int y = u[2].Y; // NullReference exception
      User[] users = new User[5];
      for (int i = 0; i <users.Length; i++) // Iterate i from 0 to 999
      users[i] = new User();
   }
}
public struct Point { public int X, Y; }
public class User { public int X, Y; }

출력

csharp
3
csharp
visual basic
f#
csharp
visual basic
f#
0
0
0
0

위 내용은 C#에서 배열은 어떻게 작동하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제