当前位置: 首页 > news >正文

五、C#笔记

/// <summary>
/// 第八章:理解值和引用
/// </summary>
namespace Chapter8
{
    class Program
    {
        static void Main(string[] args)
        {
            //8.1复制值类型的变量和类
            int i = 42;
            int copyi = i;
            i++;
            //i和copyi是两个地址互不影响
            Mouble.Circle C;
            C = new Mouble.Circle(42);
            Mouble.Circle refc = C;
            //new出来是同一地址
            //复制引用的错误方式:refc.v = C.v;
            //运用克隆的方法复制数据

            //8.2理解null值和可空类型
            /*
             * 变量要初始化
             * 类可以为null
             */
            ///8.2.1 空条件操作符
            if(C is null)
            {

            }
            ///8.2.2 使用可空类型
            //非法 int i = null
            int? itest = null;//合法
            ///8.2.3 理解可控类型的属性
            if (!itest.HasValue)//itest为空
            {
                itest = 99;
            }
            else
            {
                Console.WriteLine(itest.Value);
            }

            //8.3 使用ref参数和out参数
            ///8.3.1创建ref参数
            int arg = 42;
            doIncrement(ref arg);
            Console.WriteLine(arg);//为43
            ///8.3.2创建out参数
            int arg1;//未初始化
            doInitialize(out arg1);
            Console.WriteLine(arg1);

            //8.4计算机内存的组织方式
            /*
             * 栈:
             * 
             * 设计的目标:调用方法时,它的参数和局部变量分配的内存总是从栈中获取。
             * 方法结束后(不管正常返回还是抛出异常),为参数和局部变量分配的内存都自动归还给栈,并可在另一个方法调用时重新使用。
             * 栈上的方法参数和局部变量具有良好定义的生存期。
             * 方法开始时进入生存期,结束时结束生存期。
             * 
             * 内存管理方式(堆的越来越高的箱子):调用方法时,它的每个参数都被放入一个箱子并放到栈顶。
             * 每个局部变量也同样分配到一个箱子,并同样放到栈顶。
             * 方法结束后,它的所有箱子都从栈中移除。
             * 
             * 堆:
             * 
             * 设计的目标:使用new关键字创建对象(类的实例)时,构造对象所需的内存总是从堆中获取。
             * 堆上创建的对象具有较不确定的生存期;
             * 使用new关键字将创建对象,但只有在删除了最后一个对象引用之后的某个不确定时刻,它才会真正消失。
             * 
             * 内存管理方式(散步在房间里的一大堆房子):创建新对象时,“运行时”查找空箱子,把它分配给对象。
             * 对对象的引用则存储在栈上的一个局部变量中。
             * “运行时”跟踪每一个箱子的引用数量(记住,两个变量可能引用同一个对象)。
             * 一旦最后一个引用消失,运行时就将箱子标记为“未使用”。
             * 将来某个时候,会清楚箱子里的东西,使之能被重用。
             */
            ///8.4.1使用栈和堆
            /*
             * 虽然对象本身存储在堆中,但对象引用(变量c)存储在栈中
             * 堆内存是有限的资源。堆内存耗尽,new操作符抛出OutOfMemoryException,对象创建失败。
             */
            ///8.4.2System.Object类(所有类都是object的派生类)
            ///8.4.3装箱
            /*
             * 将数据项从栈自动复制到堆的行为成为装箱
             */
            ///8.4.4拆箱
            int i1 = 42;
            object o = i1;
            i1 = (int)o;
             /*
              * 编译器发现指定了类型int,所以会在运行时生成代码检查o实际引用了什么。它可能引用任何东西。
              * 如o真的引用了一个已装箱int,转型成功执行,编译器生成的代码会从装箱的int中提取出值。
              * (将装箱的值在存回i1)
              * 该过程称为拆箱或取消装箱
              */

            //8.5 数据的安全类型
            ///8.5.1 is操作符
            if(o is int)
            {
                int temp = (int)o;//转是安全的:o确定是一个int型
            }
            ///8.5.2 as操作符
            String a = "aa";
            String tewmp1 = a as String;
            //运行时尝试将对象转换成指定类型。若转换成功,就返回转换成功的结果。
            //转换失败,as表达式的求值结果为null
            ///8.5.3复习switch语句
            Console.ReadLine();
        }

        static void doIncrement(ref int param)//验证是否初始化
        {
            param++;
        }

        static void doInitialize(out int param)//必须在方法中赋值,所以不用初始化
        {
            param=42;
        }

    }
}
 

namespace Chapter8.Mouble
{
    class Circle
    {
        private int v;
        public Circle()
        {

        }
        public Circle(int v)
        {
            this.v = v;
        }

        //克隆复制私有数据
        public Circle Clone()
        {
            Circle clone = new Circle();
            clone.v = this.v;
            return clone;
        }
    }
}

相关文章:

五、C#笔记

/// <summary> /// 第八章&#xff1a;理解值和引用 /// </summary> namespace Chapter8 { class Program { static void Main(string[] args) { //8.1复制值类型的变量和类 int i 42; int copyi i…...

Oracle的错误信息帮助:Error Help

今天看手册时&#xff0c;发现上面有个提示&#xff1a; Error messages are now available in Error Help. 点击 View Error Help&#xff0c;显示如下&#xff0c;其实就是oerr命令的图形化版本&#xff1a; 点击Database Error Message Index&#xff0c;以下界面等同于命令…...

阿里云磁盘在线扩容

我们从阿里云的控制面板中给硬盘扩容后结果发现我们的磁盘空间并没有改变 注意&#xff1a;本次操作是针对CentOS 7的 &#xfeff;#使用df -h并没有发现我们的磁盘空间增加 #使用fdisk -l发现确实还有部分空间 运行df -h命令查看云盘分区大小。 以下示例返回分区&#xf…...

OpenCV图像相似性比对算法

背景 在做图像处理或者计算机视觉相关的项目的时候&#xff0c;很多时候需要我们对当前获得的图像和上一次的图像做相似性比对&#xff0c;从而找出当前图像针对上一次的图像的差异性和变化点&#xff0c;这需要用到OpenCV中的一些图像相似性和差异性的比对算法&#xff0c;在O…...

RedHat8.1安装mysql5.6(GLIBC方式)

安装包下载链接下载链接 https://dev.mysql.com/downloads/file/?id492142 [rootlocalhost ~]# ls //查看压缩包 anaconda-ks.cfg Desktop Documents Downloads initial-setup-ks.cfg Music mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz Pictures Public Templates…...

数据结构之插入排序

目录 前言 插入排序 直接插入排序 插入排序的时间复杂度 希尔排序 前言 在日常生活中&#xff0c;我们不经意间会遇到很多排序的场景&#xff0c;比如在某宝&#xff0c;某东上买东西&#xff0c;我们可以自己自定义价格是由高到低还是由低到高&#xff0c;再比如在王者某…...

2023年江西省“振兴杯”网络信息行业(信息安全测试员)职业技能竞赛 Write UP

文章目录 一、2023csy-web1二、2023csy-web2三、2023csy-web3四、2023csy-web4五、2023csy-misc1六、2023csy-misc2七、2023csy-crypto1八、2023csy-re1 一、2023csy-web1 该题提供一个web靶场&#xff0c;《伟大的挑战者》&#xff0c;分值&#xff1a;5分 web页面一直在播放c…...

【5G PHY】5G NR 如何计算资源块的数量?

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…...

解决oracle.sql.TIMESTAMP序列化转换失败问题 及 J2EE13Compliant原理

目录 报错现象报错内容处理方法Oracle驱动源码总结 报错现象 oracle表中存在TIMESTAMP类型的列时&#xff0c;jdbc查出来做序列化时报错 报错内容 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframewo…...

QQ2023备份

需要修改的路径&#xff08;共3处&#xff09; 这三处路径中&#xff0c;只有一处是需要修改的 QQPC端-主菜单-设置-基本设置-文件管理 点击上面的“”自定义“”&#xff0c;然后修改路径即可 修改路径后提示 然后等一会才会关干净QQ的相关进程&#xff0c;关闭后才会有自动…...

HNU计算机结构体系-实验2:CPU动态指令调度Tomasulo

文章目录 实验2 CPU动态指令调度Tomasulo一、实验目的二、实验说明三、实验内容问题1&#xff1a;问题2&#xff1a;问题3&#xff1a;问题4&#xff1a;问题5&#xff1a; 四、思考题问题1&#xff1a;问题2&#xff1a; 五、实验总结 实验2 CPU动态指令调度Tomasulo 一、实验…...

智慧城市是什么?为什么要建智慧城市?

智慧城市是一个通过现代科技手段推动城市管理和服务创新的概念。 具体来说&#xff0c;它利用信息技术和创新概念&#xff0c;将城市的各个系统和服务集成起来&#xff0c;以提升城市运行效率、优化城市管理和服务&#xff0c;改善市民的生活质量。 为什么要建智慧城市呢&…...

数据结构线性表-栈和队列的实现

1. 栈(Stack) 1.1 概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 …...

IntelliJ IDEA 的 HTTP 客户端的高级用法

本心、输入输出、结果 文章目录 IntelliJ IDEA 的 HTTP 客户端的高级用法前言HTTP 请求对 gRPC 请求的支持对 GraphQL 和 WebSocket 请求的支持环境文件OpenAPI 补全用于持续集成的 HTTP 客户端 CLI花有重开日,人无再少年实践是检验真理的唯一标准IntelliJ IDEA 的 HTTP 客户端…...

代码随想录算法训练营第四十六天 _ 动态规划_198.打家劫舍、213.打家劫舍II、337.打家劫舍 III。

学习目标&#xff1a; 动态规划五部曲&#xff1a; ① 确定dp[i]的含义 ② 求递推公式 ③ dp数组如何初始化 ④ 确定遍历顺序 ⑤ 打印递归数组 ---- 调试 引用自代码随想录&#xff01; 60天训练营打卡计划&#xff01; 学习内容&#xff1a; 198.打家劫舍 动态规划五步曲&a…...

ffmpeg编译问题

利用ffmpeg实现一个播放器&#xff0c;ffmpeg提供动态库&#xff0c;但是编译链接的时候遇到下面的问题&#xff1a; ../ffmpegWidgetPlayer/videoplayerwidget.cpp:23: error: undefined reference to sws_freeContext(SwsContext*) ../ffmpegWidgetPlayer/videoplayerwidget.…...

【flink番外篇】1、flink的23种常用算子介绍及详细示例(3)-window、distinct、join等

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点&#xff0c;并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分&#xff0c;比如术语、架构、编程模型、编程指南、基本的…...

centos7做gitlab数据灾备项目地址指向问题

如果你在 CentOS 7 上使用 GitLab 时&#xff0c;它回复的数据指向了另一个服务器的地址&#xff0c;可能是因为配置文件中的一些设置不正确。 要解决这个问题&#xff0c;可以尝试以下几个步骤&#xff1a; 检查 GitLab 配置文件&#xff1a;打开 GitLab 的配置文件&#xf…...

leetcode:93. 复原 IP 地址

复原 IP 地址 中等 1.4K 相关企业 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&#xff1a;“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址&#xff0c;但…...

玄子Share-CSS3 弹性布局知识手册

玄子Share-CSS3 弹性布局知识手册 Flexbox Layout&#xff08;弹性盒布局&#xff09;是一种在 CSS 中用于设计复杂布局结构的模型。它提供了更加高效、简便的方式来对容器内的子元素进行排列、对齐和分布 主轴和交叉轴 使用弹性布局&#xff0c;最重要的一个概念就是主轴与…...

3分钟搞定!FigmaCN终极中文插件:让英文界面秒变中文的免费神器

3分钟搞定&#xff01;FigmaCN终极中文插件&#xff1a;让英文界面秒变中文的免费神器 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面而烦恼吗&#xff1f;专业术…...

告别金融数据壁垒:如何用AKTools一键打通多语言财经数据接口

告别金融数据壁垒&#xff1a;如何用AKTools一键打通多语言财经数据接口 【免费下载链接】aktools AKTools is an elegant and simple HTTP API library for AKShare, built for AKSharers! 项目地址: https://gitcode.com/gh_mirrors/ak/aktools 还在为不同编程语言获取…...

告别手动上下料:手把手教你用符合SEMI标准的EAP软件实现半导体设备自动化联机

半导体设备自动化联机实战&#xff1a;基于SEMI标准的EAP软件深度应用指南 在半导体制造车间里&#xff0c;设备工程师们每天都要面对一个令人头疼的场景&#xff1a;凌晨三点被报警电话惊醒&#xff0c;原因是某台关键设备因人工上下料失误导致整条产线停摆。这种传统手动操作…...

怎么快速降AI率?答辩前1周从60%降到10%以内实操指南!

怎么快速降AI率&#xff1f;答辩前1周从60%降到10%以内实操指南&#xff01; 答辩前 1 周拿到 AI 率 65% 报告&#xff0c;是什么具体场景&#xff1f; 周一早上 9 点。我硕士答辩定在下周一上午 9 点——还有整整 7 天。导师周日晚发消息&#xff1a;「答辩前再送一次维普看…...

被论文压到喘不过气?Paperxie 本科论文功能,把你的毕业节奏拉回正轨

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ai/dissertationhttps://www.paperxie.cn/ai/dissertation 毕业季的焦虑&#xff0c;一半来自答辩&#xff0c;一半来自毕业论文。选题卡壳、文献找不全、格式改到崩溃、写了…...

DellFanManagement终极指南:如何彻底掌控戴尔笔记本风扇噪音与散热平衡

DellFanManagement终极指南&#xff1a;如何彻底掌控戴尔笔记本风扇噪音与散热平衡 【免费下载链接】DellFanManagement A suite of tools for managing the fans in many Dell laptops. 项目地址: https://gitcode.com/gh_mirrors/de/DellFanManagement 还在为戴尔笔记…...

如何快速清理Windows驱动存储:Driver Store Explorer完整使用指南

如何快速清理Windows驱动存储&#xff1a;Driver Store Explorer完整使用指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Driver Store Explorer&#xff08;简称RAPR&#xff09;是…...

TinyGPT-V 和 MiniGPT-4 在架构设计上的主要区别

MiniGPT-4 是“大 LLM 冻结视觉编码器 单层线性投影”的经典桥接式 MLLM&#xff1b;TinyGPT-V 是“小 LLM 视觉模块 更复杂 mapping / norm / LoRA 训练策略”的轻量化 sVLM。1. 总体架构对比对比项MiniGPT-4TinyGPT-V设计目标验证强 LLM 接入视觉后可涌现 GPT-4V 类多模态…...

Allegro中Route Keepout、Design Outline和Cutout到底怎么用?一张图讲清PCB布局中的‘禁区’设置

Allegro中三大边界工具实战指南&#xff1a;Route Keepout、Design Outline与Cutout的精准运用 在PCB设计领域&#xff0c;边界定义如同城市规划中的红线&#xff0c;既决定了板卡的物理形态&#xff0c;又影响着电气性能的发挥。Cadence Allegro作为行业标准工具&#xff0c;提…...

在Taotoken控制台中查看与分析API用量明细的实际操作

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Taotoken控制台中查看与分析API用量明细的实际操作 对于使用大模型API进行开发的团队或个人而言&#xff0c;清晰、准确地掌握AP…...