C#:类是引用类型

最近学习C#遇见一个很有一个的概念,引用类型与值类型,这个部分我现在还是一知半解,就写一部分自己的体会吧。首先直接上代码。
public class MyClass
        {
            public int val;
        }

        static void Main(string[] args)
        {
            MyClass objectA = new MyClass();
            MyClass objectB = objectA;
            objectA.val = 10;
            objectB.val = 20;

            Console.WriteLine("objectA.val = {0}", objectA.val);

            Console.ReadKey();
        }

这段代码的作用很简单,我首先规定了一个只有一个字段的类,然后实例化了两个对象,分别对这两个对象中的字段赋值,最后打印出第一个对象的字段,输出结果是这样的


然而我赋值的时候明明是

objectA.val = 10;

按照书上的解释是,因为类是引用类型而不是值类型,因此对第二个对象赋值时也改变了第一个对象的值,这个说法我是很难理解的。按照进一步的理解,所谓的引用类型似乎好像和指针有关,换句话说所谓实例化对象得到的是一个分配内存的指针,因此

MyClass objectB = objectA;

实际上是两个指针指向了同一段内存。按照这种解释我是能理解最后输出的问题,然而问题是C#不是C,指针不是显示定义的,我怎么知道什么时候是指针,什么时候是变量,这个问题还要以后慢慢体会。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值