3

refメソッド内に状態のいくつかのビットを格納するために構造体を使用することを検討していましたが、値渡しを避けるためにキーワードを使用してこれをヘルパー メソッドに渡すことができるようにしたいと考えていました。ただし、それを行うと、スタックではなくヒープに保存されますか?

コード例:

var link = new Geoff("Bergen");

Perambulate(ref link);

Console.WriteLine(link.Name);

void Perambulate(ref Geoff man)
{
    Console.WriteLine("Perambulating {0}",man.Name);
}

struct Geoff
{
    public readonly string Name;

    public Geoff(string name)
    {
        Name = name;
    }
}

refキーワードが参照された値を強制的にヒープに格納するかどうかを本当に尋ねていると思います。

4

3 に答える 3

5

いいえ、ヒープには保存されません。スタック上のその場所への参照を渡すだけです。

また、名前の変更を許可しているため、構造体の設計は良くありません。構造体の内容は不変でなければなりません。この例ではクラスを使用することをお勧めします。

于 2013-11-01T11:35:12.387 に答える