微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

一遍又一遍地思考这个问题,直到你感觉到它深藏在你的骨头里.在你掌握这个基本概念之前,你会发现编程的理由非常具有挑战性.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐