重複の可能性:
refによるオブジェクトの受け渡し
以下のコードでは、出力は次のようになります。
Without:
With:1
コード:
static void Main(string[] args)
{
var listWithoutRef = new List<int>();
WithoutRef(listWithoutRef);
Console.WriteLine("Without:" + string.Join(" ", listWithoutRef));
var listWithRef = new List<int>();
WithRef(ref listWithRef);
Console.WriteLine("With:" + string.Join(" ", listWithRef));
}
static void WithoutRef(List<int> inList)
{
inList = new List<int>(new int[] { 1 });
}
static void WithRef(ref List<int> inList)
{
inList = new List<int>(new int[] { 1 });
}
これを見るだけで、リストはヒープ上にあり、とにかくrefによって渡されるので、同じである必要がありますか?refキーワードを誤解していますか?それとも私は何か他のものが欠けていますか?