C#のstringの内部構造をシミュレートしてみる

以下は、自作のstringクラスのコードです。

public class MyString
{
    private char[] data;

    public MyString(string input)
    {
        data = input.ToCharArray();
    }

    public char this[int index]
    {
        get { return data[index]; }
        set { data[index] = value; }
    }

    public int Length
    {
        get { return data.Length; }
    }

    public override string ToString()
    {
        return new string(data);
    }
}

このコードでは、stringクラスと同じように、文字列をchar型の配列で内部的に保持しています。また、インデクサを実装しているため、文字列の各文字にアクセスすることができます。さらに、Lengthプロパティを実装しているため、文字列の長さも取得できます。最後に、ToStringメソッドをオーバーライドしているため、MyStringクラスのオブジェクトをstring型に変換することもできます。

以下は、このクラスを使用したサンプルコードです。

MyString myString = new MyString("Hello, world!");

Console.WriteLine(myString[7]); // 'w'

myString[7] = 'W';

Console.WriteLine(myString.ToString()); // "Hello, World!"

Console.WriteLine(myString.Length); // 13

C#,インデクサ,学習

Posted by hidepon