「東雲 忠太郎」の平凡な日常のできごと

「東雲 忠太郎」の平凡な日常のできごと

2024.08.14
XML
カテゴリ: WPFC#.NET


インデクサを使用して複数のプロパティを管理する場合、インデクサを使って複数のプロパティにアクセスする方法があります。具体的には、インデクサを使用して内部データ構造にアクセスし、そのデータ構造の各要素に関連するプロパティを管理することができます。


以下に、インデクサを使って複数のプロパティを管理するサンプルコードを示します。この例では、`Person` クラスを使って、複数の人の名前や年齢を管理するクラスを作成します。




#### **1. `Person` クラス**


`Person` クラスは、名前と年齢を持つ個人を表します。


```csharp

public class Person

{

    public string Name { get; set; }

    public int Age { get; set; }

}

```


#### **2. `PersonCollection` クラス**


`PersonCollection` クラスは、`Person` オブジェクトのコレクションを管理します。インデクサを使って、インデックスで `Person` オブジェクトにアクセスします。


```csharp

using System;


public class PersonCollection

{

    private Person[] _people;


    public PersonCollection(int size)

    {

        _people = new Person[size];

        for (int i = 0; i < size; i++)

        {

            _people[i] = new Person(); // デフォルトの Person オブジェクトを初期化

        }

    }


    // インデクサの定義

    public Person this[int index]

    {

        get

        {

            if (index < 0 || index >= _people.Length)

                throw new IndexOutOfRangeException("Index out of range.");

            return _people[index];

        }

        set

        {

            if (index < 0 || index >= _people.Length)

                throw new IndexOutOfRangeException("Index out of range.");

            _people[index] = value;

        }

    }

}

```


#### **3. 使用例**


`PersonCollection` クラスを使って、複数の `Person` オブジェクトを管理し、それぞれのプロパティにアクセスします。


```csharp

public class Program

{

    public static void Main()

    {

        var collection = new PersonCollection(3);


        // インデクサを使って Person オブジェクトにアクセス

        collection[0].Name = "Alice";

        collection[0].Age = 30;


        collection[1].Name = "Bob";

        collection[1].Age = 25;


        collection[2].Name = "Charlie";

        collection[2].Age = 35;


        // インデクサを使って Person オブジェクトのプロパティにアクセス

        for (int i = 0; i < 3; i++)

        {

            var person = collection[i];

            Console.WriteLine($"Person {i}: Name = {person.Name}, Age = {person.Age}");

        }

    }

}

```


### **コードの説明**


1. **`Person` クラス**: 名前 (`Name`) と年齢 (`Age`) の2つのプロパティを持つクラスです。


2. **`PersonCollection` クラス**:

   - `_people` 配列を使って `Person` オブジェクトを管理します。

   - インデクサを定義し、`Person` オブジェクトに対してインデックスアクセスを提供します。`get` アクセサと `set` アクセサを使って、インデックスで指定された `Person` オブジェクトにアクセスします。


3. **`Program` クラス**:

   - `PersonCollection` クラスのインスタンスを作成し、インデクサを使って `Person` オブジェクトに名前と年齢を設定します。

   - インデクサを使って `Person` オブジェクトのプロパティにアクセスし、その値をコンソールに出力します。


### **まとめ**


このサンプルコードでは、インデクサを使って複数の `Person` オブジェクトを管理し、インデックスを通じて各 `Person` オブジェクトのプロパティにアクセスしています。インデクサを使うことで、データ構造に対する直感的なアクセスが可能となり、複数のプロパティを効率的に管理することができます。






お気に入りの記事を「いいね!」で応援しよう

Last updated  2024.08.14 15:01:52


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Design a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: