動作していないコードがあります。皆さんが私に提供してくれる助けをいただければ幸いです。
以下のコードは例外を生成しています...しかし、refのセマンティクスを誤って解釈していない限り、例外は発生しないはずです。
編集:すべての答えに感謝します...私はOne.Produceメソッドで新しいQueueオブジェクトをインスタンス化していることを知っています...しかしこれは私が実際にやりたいことです、私はMain._queueに参照を保持させたいですOne._queueに。それは可能ですか?
using System;
using System.Collections.Generic;
namespace ConsoleApplication2
{
class One
{
Queue<string> _queue;
public One(ref Queue<string> queue)
{
// should be assigning by reference
_queue = queue;
}
public void Produce()
{
_queue = new Queue<string>();
_queue.Enqueue("one");
}
}
class Program
{
static void Main(string[] args)
{
Queue<string> _queue = new Queue<string>();
One one = new One(ref _queue);
one.Produce();
// this generates an exception, since _queue is empty
// i'd have thought _queue would have one item, "one"
string value = _queue.Dequeue();
}
}
}