Почему этот код печати «7» Пытаясь понять, как стека и кучи выглядит и как делает это выглядит в распределении памятиПочему этот код печати «7»
public static void Main()
{
Cls a = new Cls();
a.v = 3;
Func(a);
Console.WriteLine(a.v);
}
class Cls
{
public int v;
}
static void Func(Cls a)
{
a.v = 7;
a = new Cls();
a.v = 2;
}
Если вы можете прикрепить scatch из стека и кучи с памятью, он действительно оценит
Потому что вы устанавливаете 'a.v = 7'. Следующее присваивание 'a.v = 2' находится на полностью отдельной« Cls », никак не связанной с первой. –
Что вы, вероятно, путаете, состоит в том, что переменные и объекты являются двумя отдельными понятиями. Делая 'a = новый Cls()', вы не перезаписываете оригинальный объект, на который указывал 'a'. Вы перенаправляете 'a' на другой объект. –
Отметьте используемым языком (Java?) – Bentoy13