读写XML文件时对内存操作存在疑问

在学习操作xml的读写时有这样一个疑问
booksFile是一个xml文件的路径,将其读取到内存保存在document变量后将document的根节点赋给root,可是代码中没有对document再进行操作,为什么通过
document.save()对xml进行操作后xml文件发生了改变?

        private void button_Click(object sender, RoutedEventArgs e)
        {
            XmlDocument document = new XmlDocument();
            document.Load(booksFile);
            XmlElement root = document.DocumentElement;
            if (root.HasChildNodes)
            {
                root.RemoveChild(root.LastChild);
                document.Save(booksFile);
            }
        }

引用类型赋值的是堆上数据的引用,你那里相当于把document根节点的引用赋值给root,让root指向堆中document根节点的数据,然后你removechild方法对该数据进行了改变,自然在堆中的document数据会有变化,你再用save方法把它保存出来之后是有变化的