Rumah > pembangunan bahagian belakang > Tutorial C#.Net > Bagaimanakah tatasusunan berfungsi dalam C#?

Bagaimanakah tatasusunan berfungsi dalam C#?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-09-10 09:41:08
ke hadapan
1390 orang telah melayarinya

数组在 C# 中如何工作?

Tatasusunan mewakili bilangan elemen tetap bagi jenis tertentu. Elemen disimpan dalam blok memori bersebelahan, dan anda boleh mengakses elemen dengan cekap selagi anda mengetahui indeksnya.

Sintaks C# untuk mengisytiharkan dan memulakan tatasusunan adalah seperti berikut -

// create a string array to hold 5 languages
string[] languages = new string[3];
Salin selepas log masuk

Selepas mengisytiharkan tatasusunan, anda boleh menggunakan simbol segi empat sama pada tatasusunan untuk mengisi item dalam tatasusunan.

languages[0] = "csharp";
languages[1] = "visual basic";
languages[2] = "f#";
Salin selepas log masuk

Walau bagaimanapun, terdapat alternatif sintaks ringkas yang menggabungkan dua langkah di atas dalam satu langkah.

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

Dengan pembolehubah yang ditaip secara tersirat dalam C#, anda boleh menyingkirkan jenis di sebelah kiri nama pembolehubah dan hanya menggunakan var.

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

Anda boleh mengakses mana-mana elemen dalam tatasusunan menggunakan tatatanda segi empat sama.

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

Sifat Panjang tatasusunan memberitahu kita berapa banyak item dalam tatasusunan.

int count = languages.Length;
Console.WriteLine(count); // 3
Salin selepas log masuk

Adalah penting untuk diingat bahawa panjang tatasusunan tidak boleh diubah setelah ia dibuat. Percubaan untuk mengakses elemen di luar sempadan tatasusunan membuang pengecualian.

string lang = languages[3]; // throws System.IndexOutOfRangeException
Salin selepas log masuk

Jika anda ingin menggelung pada tatasusunan, gunakan gelung for atau foreach yang disediakan oleh bahasa tersebut.

// 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
}
Salin selepas log masuk

Nilai lalai

Apabila anda mencipta tatasusunan, pengkompil C# memulakan elemen kepada nilai lalainya. Sebagai contoh, mencipta tatasusunan integer menetapkan nilai setiap elemen kepada 0.

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

Apabila elemen adalah daripada jenis nilai, setiap ahli jenis itu diberikan nilai lalainya.

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

Walau bagaimanapun, untuk jenis rujukan, pengkompil hanya mencipta rujukan nol untuk setiap item.

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

Untuk mengelakkan ralat ini, anda mesti memulakan setiap item secara eksplisit seperti yang ditunjukkan di bawah.

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

Contoh

Demonstrasi masa nyata

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; }
Salin selepas log masuk

Output

csharp
3
csharp
visual basic
f#
csharp
visual basic
f#
0
0
0
0
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah tatasusunan berfungsi dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan