C#でのforeachトラバーサルの使用法

C#でのforeachトラバーサルの使用法
foreachループは、コレクション内のすべての要素をリストするために使用されます。foreachステートメントの式は、キーワードinで区切られた2つの項目で構成されます。inの右側の項目はコレクションの名前で、inの左側の項目は変数の名前で、コレクション内の各要素を格納するために使用されます。

ループの実行プロセスは次のとおりです。ループするたびに、新しい要素の値がセットから取得されます。かっこ内の式全体がtrueを返す場合は、foreachブロックのステートメントを実行できます。コレクション内のすべての要素にアクセスし、式全体の値がfalseになると、制御フローはforeachブロックの後に
実行ステートメントに転送されます

foreachステートメントは配列でよく使用されます次の例では、foreachステートメントを通じて配列の値を読み取って表示します。

配列の属性:Array.Length配列の容量

この属性を使用して、配列オブジェクトの許容ストレージ容量の値、つまり配列の長さと要素数を取得できます。これは理解しやすいです。配列には、配列の次元などの他の属性があります。属性の使用法は比較的簡単です。 1つを学びます。他の形式は基本的に同じです。ここでは例を示しません。

配列の次元と容量が多い場合、C#はコレクション/配列内のすべての要素を読み取るためのforeachステートメントを提供します。文法は次のように書かれています。

配列をトラバースする:foreach(type / objName in collection / Array)

このステートメントは、配列に格納されている変数値を1つずつチェックし、1つずつ取り出します。タイプは、objName変数に格納される、読み取りたい配列オブジェクトのデータタイプであり、objNameはタイプタイプを定義します変数名は、コレクションおよび配列(コレクション/配列)から取得された各要素を表します。コレクション/配列は、アクセスされる配列オブジェクトです。このようにして、ギザギザの配列を除くすべての次元の配列をトラバースするforeachを記述します。

:objNameのデータ型は、コレクション/配列オブジェクトの型と同じか、それより大きくなければなりません。

以下では、foreachおよびforを使用してルール配列をトラバースする例を示します。これには、配列の次元を取得する方法が含まれ、ルール配列の1回のトラバーサルにおけるforeachの利点が比較されます。

int[,,] a = new int[2, 2, 2] {
    
     {
    
    {
    
     1, 2 }, {
    
     3,4}},{
    
    {
    
     5, 6 }, {
    
     7,8}} };// 定义一个2行2列2纵深的3维数组a
for (int i = 0; i < a.GetLength (0) ;i++ )   //用Array.GetLength(n)得到数组[0,1,,,n]上的维数的元素数,0代表行,1列,n代表此数组是n+1维
{
    
    
    for (int j = 0; j < a.GetLength(1); j++)
    {
    
    
        for (int z = 0; z < a.GetLength(2);z++ )//2代表得到纵深上的元素数,如果数组有n维就得写n个for循环
        {
    
    
            Console.WriteLine(a[i,j,z]);
        }
    }
}

foreachループを使用して配列を一度にトラバースする

int[,,] a = new int[2, 2, 2] {
    
     {
    
    {
    
     1, 2 }, {
    
     3,4}},{
    
    {
    
     5, 6 }, {
    
     7,8}} };//定义一个2行2列2纵深的3维数组a
foreach(int i in a)
{
    
    
    Console .WriteLine (i);
}

これら2つのコードの実行結果は同じで、1行に1つの要素、合計8行があり、要素は1 2 3 4 5 6 7 8です。

以下の別の例を見てみましょう。これは、forループとforeachループを使用して配列要素にアクセスする例です。まず、学生数を入力するようユーザーに求め、次に学生数を配列名の要素数として使用して、学生名を格納します。 forループは、配列のインデックスiに従ってビット0から始まる「学生の名前を入力」のプロンプトを出力し、ユーザーが入力した学生の名前を配列のインデックスに従ってnames配列に保存します。names[i]、forループの最大数値(つまり、インデックスの最大値)は配列プロパティを介して取得されます。長さ、容量とインデックスの関係はindex = Array.Length-1であると言いました。この質問はiの最大値です

foreachでは、配列内の要素を1つずつしか取得できず、このステートメントを使用して配列に格納されている要素を変更できないことに注意する必要があります。
ここに画像の説明を挿入

using System;
class Program
{
    
    
    static void Main()
    {
    
    
        int count;
        Console.WriteLine("输入要登记的学生数");
        count = int.Parse(Console.ReadLine());
        string[]names = new string[count];
        for (int i = 0; i < names.Length; i++)
        {
    
    
            Console.WriteLine("请输入第{0}个学生的姓名", i + 1);
            names[i] = Console.ReadLine();
        }
        Console.WriteLine("已登记的学生如下");
        foreach (string name in names)
        {
    
    
            Console.WriteLine("{0}", name);
        }
        Console.ReadKey();
    }
}

おすすめ

転載: blog.csdn.net/weixin_43244265/article/details/106268458