如果我有一个整数,请说int counter = 2;
然后我可以创建整数int anotherCounter = counter;
,如果我要打印anotherCounter
的值,它显然会返回2.
现在,如果我说anotherCounter = 5;
,那么这不会改变我们的第一个值counter
的值。同样,如果我将counter
的值更改为counter = 10;
,那么这不会影响anotherCounter
。
但是,我已经创建了一个用于快速显示某些对象的类,但是如果我按照我刚才描述的对象执行操作,它们似乎都共享相同的值:
HSVImage initial = new HSVImage(1920, 1080);
HSVImage duplicate = initial;
出于某种原因,如果我现在更改了duplicate
中的任何内容,那么它也会影响intial
。谁能解释我哪里出错了?我假设这与我如何设置HSVImage类有关?
谢谢。 萨姆
答案 0 :(得分:1)
这是因为对象是由参考传递和复制的,与值传递的基元不同。
写作时
HSVImage initial = new HSVImage(1920, 1080);
HSVImage duplicate = initial;
您将参考复制到initial
到duplicate
,这意味着initial
现在将指向与duplicate
相同的对象
另一方面,当你写
int counter = 2;
int other = counter;
您会将counter
内的{strong>值放在other
内。
您可以在此处详细了解:https://msdn.microsoft.com/en-us/library/0f66670z.aspx
答案 1 :(得分:0)
不,它不属于您的HSVImage
类设置,它是.Net框架如何处理引用类型,它是HSVImage
类的对象,与值相对输入您的counter
变量。请通过以下链接https://msdn.microsoft.com/en-us/library/t63sy5hs.aspx