using System;
public class Test
{
public static void Main()
{
new Test().Run();
}
void Run()
{
var a = new int[1];
Console.WriteLine(a[0]);
Change(a);
Console.WriteLine(a[0]);
//не изменит массив
ReasssignIncorrectly(a);
Console.WriteLine(a[0]);
ReasssignCorrectly(ref a);
Console.WriteLine(a[0]);
}
void Change(int[] array)
{
//изменяем элемент массива, можно без ref
array[0] = 1;
}
void ReasssignIncorrectly(int[] array)
{
//пересоздание массива, т.к. аргумент не ref, это не окажет влияния на переданную ссылку
array = new[]{2};
}
void ReasssignCorrectly(ref int[] array)
{
//пересоздается успешно, т.к. ref
array = new[]{3};
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCW5ldyBUZXN0KCkuUnVuKCk7Cgl9CgkKCXZvaWQgUnVuKCkgCgl7CgkJdmFyIGEgPSBuZXcgaW50WzFdOwoJCUNvbnNvbGUuV3JpdGVMaW5lKGFbMF0pOwoJCUNoYW5nZShhKTsKCQlDb25zb2xlLldyaXRlTGluZShhWzBdKTsKCQkvL9C90LUg0LjQt9C80LXQvdC40YIg0LzQsNGB0YHQuNCyCgkJUmVhc3NzaWduSW5jb3JyZWN0bHkoYSk7CgkJQ29uc29sZS5Xcml0ZUxpbmUoYVswXSk7CgkJUmVhc3NzaWduQ29ycmVjdGx5KHJlZiBhKTsKCQlDb25zb2xlLldyaXRlTGluZShhWzBdKTsKCX0KCQoJdm9pZCBDaGFuZ2UoaW50W10gYXJyYXkpIAoJewoJCS8v0LjQt9C80LXQvdGP0LXQvCDRjdC70LXQvNC10L3RgiDQvNCw0YHRgdC40LLQsCwg0LzQvtC20L3QviDQsdC10LcgcmVmCgkJYXJyYXlbMF0gPSAxOwoJfQoJCgl2b2lkIFJlYXNzc2lnbkluY29ycmVjdGx5KGludFtdIGFycmF5KSAKCXsKCQkvL9C/0LXRgNC10YHQvtC30LTQsNC90LjQtSDQvNCw0YHRgdC40LLQsCwg0YIu0LouINCw0YDQs9GD0LzQtdC90YIg0L3QtSByZWYsINGN0YLQviDQvdC1INC+0LrQsNC20LXRgiDQstC70LjRj9C90LjRjyDQvdCwINC/0LXRgNC10LTQsNC90L3Rg9GOINGB0YHRi9C70LrRgwoJCWFycmF5ID0gbmV3W117Mn07Cgl9CgkKCSB2b2lkIFJlYXNzc2lnbkNvcnJlY3RseShyZWYgaW50W10gYXJyYXkpIAoJewoJCS8v0L/QtdGA0LXRgdC+0LfQtNCw0LXRgtGB0Y8g0YPRgdC/0LXRiNC90L4sINGCLtC6LiByZWYKCQlhcnJheSA9IG5ld1tdezN9OwoJfQoJCn0=