C#
 Computer >> コンピューター >  >> プログラミング >> C#

配列は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#";

ただし、上記の2つのステップを1つのステップに組み合わせるための代替の簡潔な構文があります。

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

配列のLengthプロパティは、その配列に含まれるアイテムの数を示します。

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

  1. Wi-Fiエクステンダーはどのように機能しますか?

    Wi-Fiエクステンダーは、その名前が示すとおりに機能します。Wi-Fi信号を拡張して、インターネットを自宅のより多くのエリアに使用できるようにします。広大なスペースに住んでいる、または働いている場合、1つは複数のフロアがあるか、もう1つは厚い壁やその他の障害物がある場合、Wi-FiエクステンダーはWi-Fi信号をエリア全体に拡散します。 Wi-Fiエクステンダーの仕組み これらのデバイスはルーターにワイヤレスで接続し、ルーターが到達しないエリアにWi-Fi信号を拡張します。自分の場所を決める前に、物理的な配置について少し試行錯誤する必要があるかもしれません。 Wi-Fiエクステンダー

  2. JavaScriptで配列を減らす方法は?

    以下は、JavaScriptで配列を減らすためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>   &n