c# – 可链接变量类型
哪些变量类型可以链接?我试图使用对象,但它没有做我想要的.
object a; object b; b = 5; a = b; b = 2; label1.Text = Convert.ToString(a); 它写了5但我希望它是2. 解决方法
这是对引用及其工作原理以及变量的简单误解.
object a; // a is a storage location // it holds references to instances of object object b; // b is a storage location //it holds references to instances of object b = 5; // "boxes" 5 into an instance of object // and assigns reference to that object to b a = b; // assigns reference in storage location b to storage location a b = 2; // "boxes" 2 into an instance of object // and assign reference to that object to b 想想这样. a和b是纸张,用于保存住在其上的房屋的地址.当你说b = 5时,可以把它想象成写下纸张上的家5的地址b.当你说a = b时,可以把它想象为将写在b上的地址复制到a.当你说b = 2时,可以把它想象为擦除写在b上的地址并用地址替换为2.这个动作不会改变写在纸上的值a.这就是这里发生的事情. 现在,让我们看一个非常简单的方法来制作你想要做的工作. class MyValue { public int Value { get; set; } } MyValue b = new MyValue { Value = 5 }; MyValue a = b; b.Value = 2; 现在,如果你说 Console.WriteLine(a.Value); 会发生什么?让我们小心翼翼.再次,回到a和b的类比,作为写有地址的纸片.我们已经说过MyValue b = new MyValue {Value = 5}.想一想这就是在纸上写下来的地址到一个房子,前面有一个标志,上面写着5.将a = b视为将写入b的地址复制到a.然后,将b.Value = 2视为改变前门上方标志的值,在这种情况下,将5更改为2.现在,如果有人询问,家中门上方的值是多少写在纸上的地址a?那么,a上的地址与b上的地址相同.我们刚刚将前门上方标志的值从5改为2.因此,我们希望看到2. 试试吧,尝试一下,你会看到打印到控制台的值2. 一遍又一遍地思考这个问题,直到你感觉到它深藏在你的骨头里.在你掌握这个基本概念之前,你会发现编程的理由非常具有挑战性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |