В некоторых сценариях нет смысла создавать объект в том же месте памяти. Если это произошло, то следующий код не будет работать так, как это делает:
public class Program
{
static void Main(string[] args)
{
var x = new Person("Old name");
var y = x;
M(ref x);
Console.WriteLine(y.Name); // Prints "Old name"
Console.ReadKey();
}
static void M(ref Person person)
{
person = new Person("New name");
}
}
class Person
{
public string Name { get; }
public Person(string name)
{
Name = name;
}
}
старый объект с Old name
значения свойства больше не существует, так что вы не могли видеть Old name
распечатаны. Поскольку вы видите это, два разных объекта существуют одновременно.
В вашем примере замена старого объекта на новый не приведет к поломке, но я сомневаюсь, что такие проверки выполняются, потому что, вероятно, существует множество отдельных случаев, которые необходимо учитывать при разработке таких особенность.
'static int [] array = {5};': | – Will
Спасибо, это делает вещи более ясными. –