C# 奇怪的图像变量行为
我有两个C# 奇怪的图像变量行为,c#,image,winforms,C#,Image,Winforms,我有两个图片框,我想在第一个图片框中显示一个图像,然后在第二个图片框中显示一个旋转版本。然而,我认为应该可以工作的代码确实表现得很奇怪,因为图像在两个图片框中都旋转了: Image im = Image.FromFile(D:\somefolder\picture.jpg"); pictureBox1.Image = im; Image im_rot = im; //Image im_rot = Image.FromFile(D:\somefolder\picture.j
图片框
,我想在第一个图片框中显示一个图像,然后在第二个图片框中显示一个旋转版本。然而,我认为应该可以工作的代码确实表现得很奇怪,因为图像在两个图片框中都旋转了:
Image im = Image.FromFile(D:\somefolder\picture.jpg");
pictureBox1.Image = im;
Image im_rot = im;
//Image im_rot = Image.FromFile(D:\somefolder\picture.jpg");
im_rot.RotateFlip(RotateFlipType.Rotate270FlipNone);
pictureBox2.Image = im_rot;
如果我将第3行替换为第4行,那么它可以工作,但为什么不能以另一种方式工作呢?按照当前编写代码的方式,将相同的对象分配给两个变量。这意味着当你对其中一个进行操作时,它会改变内存中的同一个对象。使用注释掉的备用代码,您可以创建一个新的、不同的对象,并将其分配给每个变量。按照当前编写代码的方式,您将同一对象分配给两个变量。这意味着当你对其中一个进行操作时,它会改变内存中的同一个对象。使用您注释掉的替代代码,您创建了一个新的、不同的对象,该对象被分配给每个变量。您应该阅读关于引用类型和值类型的内容。嗯,好的,认为它们是自变量。我会调查的。谢谢你应该阅读参考类型和值类型的可能的重复。嗯,好的,认为它们是自变量。我会调查的。谢谢可能重复的