C# 中引用类型的探讨

news2024/9/26 21:58:12

引用类型的变量不直接包含其数据;它包含对其数据的引用。 如果按值传递引用类型参数,则可能更改属于所引
用对象的数据,例如类成员的值。 但是,不能更改引用本身的值;例如,不能使用相同引用为新对象分配内存,并
将其保留在方法外部。 为此,请使用 ref 或 out 关键字传递参数。 为简单起见,下面的示例使用 ref

示例1:

var bClass = new BaseClass() { Number =30};   
bClass.Method1();

Console.WriteLine(bClass.Number);
Test( bClass);
Console.WriteLine(bClass.Number);


Console.ReadKey();


void Test( BaseClass baseClass)
{
    baseClass = new BaseClass
    {
        Number = 100
    };
}

运行结果
运行结果截图

如果方法中不希望更改引用类型指向,可以使用关键字 in

红色波浪线报错

如果要想实现,预想情况可以使用ref关键字

var bClass = new BaseClass() { Number =30};   
bClass.Method1();

Console.WriteLine(bClass.Number);
Test(ref bClass);
Console.WriteLine(bClass.Number);


Console.ReadKey();


void Test(ref BaseClass baseClass)
{
    baseClass = new BaseClass
    {
        Number = 100
    };
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985391.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

根据年月将数组拆分为以年月为key的二维数组

处理前: 处理后: public function lists(): array{$field = change_type,change_amount,left_amount,action,create_time,remark;$lists

飞腾X100芯片GPU状态查询

本文档对在linux系统下查看X100芯片GPU状态信息进行说明,可以帮助大家了解芯片的实时工作状态。 板子系统信息: # cat /etc/os-release NAME="Kylin" VERSION="银河麒麟桌面操作系统V10 (SP1)" VERSION_US="Kylin Linux Desktop V10 (SP1)" I…

模块化RAG:RAG新范式,像乐高一样搭建 万字长文

1. RAG系统的发展历史与问题 RAG(检索增强生成)通过访问外部知识库,检索增强生成(RAG)为 LLMs 提供了关键的上下文信息,极大地提升了其在知识密集型任务上的表现。RAG 作为一种增强手段,已在众…

vue3中使用i18n实现中英文切换,引入封装+全局切换

目录 1.安装 2.引入 3.页面中使用 4.切换语言 前言 名称由来:全称是 internationalization,插件名取了首字母 i 和尾字母 n,中间一共有 18 个字母,所以组合起来就叫 i18n。 作用:通过手动配置多种语言的翻译,且可快速切换。 正文开始↓ 1.安装 npm install vue-i18…

ADAS-GPM

文章目录 AbstractIntroductionmain contribution Related work特征融合上下文信息和注意力机制超分辨率锚框分配 MethodExperiment link Abstract 微小目标检测最近的一个趋势是引入更细粒度的标签分配策略,为分类和回归提供有希望的监督信息。然而,以…

RN环境遇到的问题

空闲学习,记录一下遇到一些问题 RN中文网 问题1:npm error code CERT_HAS_EXPIRED 原因是本地 证书过期解决办法参考 npx react-native init testProject报错: npm error code CERT_HAS_EXPIRED npm error errno CERT_HAS_EXPIRED npm er…

20240806吃干榨尽飞凌OK3588-C的8+64的核心板的eMMC存储空间resize2fs

20240806吃干榨尽飞凌OK3588-C的864的核心板的eMMC存储空间 2024/8/6 11:25 缘起,使用了飞凌OK3588-C的864的核心板,但是默认的LINUX R4版本的SDK编译的IMG固件,刷机之后貌似默认只使用了32GB?的eMCC空间。 联系飞凌提供了resize2…

【ML】为什么要做batch normlization,怎么做batch normlization

为什么要做batch normlization,怎么做batch normlization 1. batch normlization1.1 批量归一化是什么:1.2 为什么要做批量归一化: 2. feature normalization2.1 特征归一化是什么:2.2 为什么要做特征归一化: 3. batc…

Linux中apache服务安装与mysql安装

目录 一、apache安装 二、MySQL安装 一、apache安装 准备环境:一台虚拟机、三个安装包(apr-1.6.2.tar.gz、apr-util-1.6.0.tar.gz、httpd-2.4.29.tar.bz2) 安装过程: tar xf apr-1.6.2.tar.gz tar xf apr-util-1.6.0.tar.gz tar xf http…

怎么限制电脑不能打开某个网页或网站(四个方法你可一定要学会)

老板:我公司的员工真的很让人头疼。 朋友:怎么了? 老板:我一不在就有人偷偷打开某些违法网站,画面不可描述啊! 朋友:难道你还不知道可以禁止员工打开某个网站? 老板:…

传奇三职业复古单机版+无需虚拟机一键安装

今天给大家带来一款单机游戏的架设:传奇单机版。沉默版本 三职业 数值不变态 ,没有花里胡哨的东西(比如切割,生肖,时装等功能),客户端为16周年客户端 。另外:本人承接各种游戏架设&a…

[论文阅读笔记34] LISA (LISA: Reasoning Segmentation via Large Language Model) 代码精读

LISA是一个很好的Reason Segmentation的baseline, 其利用特殊的token [SEG]来微调多模态LLM和SAM的decoder来实现复杂逻辑下的prompt的推理分割. 其整体框图如下, 本篇文章精度此代码并作简单复现. 1. 推理流程 流程如下: 1.1 加载Tokenizer与模型 首先利用trans…

为什么越来越多的企业走上了数字化转型之路?

原因很简单,只要我们稍加了解就能明白的。 一方面是国家政策支持,另一方面是市场竞争的压力(什么产能过剩、服务过剩、经营维度低等因素都是导致企业不得不转型提升利润的关键点)。而恰恰数字化转型是能给企业带来效率提升、成本…

MS2201以太网收发电路

MS2201 是吉比特以太网收发器电路,可以实现超高速度的 全双工数据传输。它的通信遵从 IEEE 802.3 Gigabit Ethernet 协议 中的 10 比特接口的时序要求协议。 MS2201 支持数据传输速率从 1Gbps 到 1.85Gbps 。 主要特点 ◼ 电源电压: 2.5V 、 3.3V …

【Qt】管理创建子项目

新建项目 打开是这样,无法添加子项目 pro添加 TEMPLATE subdirs有了 点击添加子项目 其他项目-子目录项目 (空的子项目,只有pro,无h、cpp) 子目录名字 直接创建子目录下子项目 选择有无界面或者其他类型项目 …

Python pyinstaller打包exe最完整教程

1 简介 python提供了多种方法用于将普通的*.py程序文件编译成exe文件(有时这里的“编译”也称作“打包”)。exe文件即可执行文件,打包后的*.exe应用不用依赖python环境,可以在他人的电脑上运行。 pyinstaller是一个第三方模块&a…

《网络安全自学教程》- Windows防火墙原理分析与策略配置

《网络安全自学教程》 防火墙(Firewall)是用来「隔离」内、外「网络」的安全设备,可以是硬件设备、软件或者云防火墙。 Windows防火墙 1、防火墙分类1.1、包过滤防火墙1.2、应用代理防火墙1.3、状态检测防火墙1.4、下一代防火墙2、开启防火墙3、添加策略1、防火墙分类 防火…

OSPF路由协议多区域

一、OSPF路由协议单区域的弊端 1、LSDB庞大,占用内存大,SPF计算开销大; 2、LSA洪泛范围大,拓扑变化影响范围大; 3、路由不能被汇总,路由表庞大,查找路由开销大。 二、如何解决OSPF单区域的问题? 引入划分区域 1、每个区域独立存储LSDB,划分区域减小了LSDB。 2、…

Python的100道经典练习题,每日一练,必成大神!!!

Python的100道经典练习题是一个广泛而深入的学习资源,可以帮助Python初学者和进阶者巩固和提升编程技能 完整的100多道练习题可在下面图片免沸获取哦~ 整理了100道Python的题目,如果你是一位初学者,这一百多道题可以 帮助你轻松的使用Python…

Harbor系列之11:制品签名

借助Cosign或Notaion对制品进行签名 制品签名和签名验证是关键的安全功能,它们允许你验证制品的完整性。Harbor 通过与 Cosign 或 Notation 的集成来支持内容信任。 项目管理员可以配置项目以强制执行内容信任,要求所有制品在从 Harbor 注册表中拉取之…