防止重复对象相互影响C#

时间:2017-01-08 17:23:36

标签: c# class oop

这可能看起来很傻,所以请原谅我的天真。

如果我有一个整数,请说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类有关?

谢谢。 萨姆

2 个答案:

答案 0 :(得分:1)

这是因为对象是由参考传递和复制的,与传递的基元不同。

写作时

HSVImage initial = new HSVImage(1920, 1080);
HSVImage duplicate = initial;

您将参考复制到initialduplicate,这意味着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

了解有关该主题的更多信息