我经历了这个:
var bmp = new WriteableBitmap(ImageWidth, ImageHeight, 96, 96, PixelFormat, null); // declaring the variable
_measurement.MasterImage.CopyTo(bmp); // passing the variable by value
TransformedBitmap transformedBmp = new TransformedBitmap( bmp, new RotateTransform(90)); // using the variable with it new value
变量bmp
如何更改,我们 不 通过引用传递?
答案 0 :(得分:1)
bmp是一个对象,一个引用类型 - 这意味着您要传递对该对象的引用,而不是值。
public void Resize(WriteableBitmap bmp)
{
bmp.Width = 100; // Changes the object which bmp points to
}
即使对值的引用是按值传递,也可以更改该对象的内容。
// Create a new object
bmp = new WriteableBitmap(ImageWidth, ImageHeight);
Resize(bmp); // pass a reference to the object
// bmp.Width is now 100
答案 1 :(得分:0)
“价值”没有改变。它是一个给定的对象,它仍然是那个对象。
如果你想象一个List<string>
,可能会更容易想到。您可以将它传递给其他方法,它将始终是同一个对象。其他方法可能会将项添加到列表或删除它们。或者,如果它是具有属性的类,则可以将其传递给更改这些属性的方法。
他们无法更改(除非您通过引用传递)是对象本身。它们无法将其设置为其他对象或将其设置为null。
他们可以完成您可以对该对象执行的任何其他操作。
Here's a blog post我在这里写了一些例子。它会点击,你会看到它。