浅谈C#指针问题
作者:hebedich 发布时间:2022-07-19 17:06:00
标签:C#,指针
花了很长时间的实践,终于搞清楚了。类或者链表等,在指针赋值的时候,会使用新的指针。比如:
Foo a = c;
Foo b = new Foo();
Foo a = b;
这种情况下,会把b的指针传给a,a不再指向c,a以后的操作都会对b生效。
如下情况下:
Foo b = new Foo();
Foo a{get {return b;}}
这种情况下,表示a无法被修改,但是如果你a.bar = 5;的话,那么是可以修改的,为什么呢?因为此时任何针对a的属性的修改,本质上都是对b的修改,只有a = c;是不可以的。可以简单理解为a = c;是指针的赋值,而a.bar = 5;只是所指对象的属性发生改变。
综上所述:
如果你希望a是一个仅指向b的替身,那么就可以后后面这个方法了。好处就是,可以随意修改a的属性,也就是b的属性,但是a永远会指向b,不会被篡改。
如果希望多次使用a,那么只能用第一种方法。但是如果搞不清楚用错的话,会经常不小心修改到原始值。
0
投稿
猜你喜欢
- 一、自定义Dialog在沉浸式效果下,当界面弹出对话框时,对话框将获取到焦点,这将导致界面退出沉浸式效果,那么是不是能通过屏蔽对话框获取焦点
- 获取Android的ROOT权限其实很简单,只要在Runtime下执行命令"su"就可以了。// 获取ROOT权限pub
- maven 打包 动态启动脚本介绍如何通过maven的环境变量动态打包, 并动态改变启动脚本中的环境参数之前都是每个环境一个启动脚本, 其实
- Spring在Java EE开发中是实际意义上的标准,但我们在开发Spring的时候可能会遇到以下令人头疼的问题:(1)大量配置文件的定义;
- “无论是什么类型,所有的数据都是一系列的位,即一系列0和1。变量的含义是通过解释这些数据的方式来传达的。”——这句原话是书上翻译的,不过后一
- 本文实例讲述了Android实现完整游戏循环的方法。分享给大家供大家参考。具体如下:1. DroidzActivity.java:packa
- 简介对于一个APP来说,肯定会有一个AppBar,这个AppBar一般包含了APP的导航信息等。虽然我们可以用一个固定的组件来做为AppBa
- 最近在项目开发中,使用spring boot+mybatis的架构,数据库设计主键id时定义为bigint类型,使用mybatis的自动生成
- Android getevent用法实例详解最近在测试设备按键的常用命令,感觉这些命令都有的,但就是不知道怎么查找。翻阅了几篇博
- 前言其实小编之前一直都是用的Java来开发Android,但是工作需求,开始了Kotlin的编程,接触到了JetPack,发现其中的Navi
- 题目描述在进行网络编程时,有时需要对局域网的所有主机进行遍历,为此需要获得内网的所以IP地址题目实现:获得内网的所有IP地址的小应用。解题思
- Understanding AsyncTaskAsyncTask是Android 1.5 Cubake加入的用于实现异步操作的一个类,在此之
- 可重入锁 广义上的可重入锁指的是可重复可递归调用的锁,在外层使用锁之后,在内层仍然可以使用,并且不发生死锁(前提得是同一个对象或者
- 这篇文章主要介绍了java的package和import机制原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 1. 原因最近学习spring data JPA 时候要用到分页功能,但是发现网上所有教程都是通过new PageRequest()方法解决
- 近日沉醉于熟悉公司新项目的过程,不断地接触新的应用场景与实现技术,对于我是一种学不来的进步,实践是检验真理的唯一标准。我们今天就浅浅的谈一谈
- 1. 栈1.1 概念栈:是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。特点:栈中的数据元素遵循先进后出的原则,但要注意进的
- 二维数组遍历:思想:1.先将二维数组中所有的元素拿到2.再将二维数组中每个元素进行遍历,相当于就是在遍历一个一维数组第一种方法:双重for循
- 想要将一个项目导出为jar包,供其它项目使用,在eclipse中可以直接导出该项目为jar包,而 在AS中可以通过修改gradle才处理。接
- C#中List可谓是使用最广泛的一种数据类型了,使用他来规范数据时,往往会涉及到对数据的处理操作,相关处理数据方法也非常丰富,本文将简单介绍