C#类和结构体的区别
1、类class是引用类型,多个引用类型变量的值会互相影响。存储在堆(heap)上
2、结构体struct是值类型,多个值类型变量的值不会互相影响。存储在栈(stack)上
| 类 | 结构 | |
| 关键字 | class | struct |
| 类型 | 引用类型 | 值类型 |
| 存储位置 | 托管 堆(heap)上 | 栈(stack)上 |
| 语法 | 都使用new来说明实例 | 都使用new来说明实例 |

using System;
using System.Collections.Generic;
using System.Text;namespace VariableScopeSample3
{class Vector{int value;public int Value { get; internal set; }}
}
using System;
using System.Collections.Generic;
using System.Text;namespace VariableScopeSample3
{struct Point{public int X { get; internal set; }public int Y { get; internal set; }}
}
using System;namespace VariableScopeSample3
{class Program{static int j = 20;static int Main(string[] args){int j = 30;Console.WriteLine(j);// return 0;Vector x, y;x = new Vector();x.Value = 30;//value is a field defind in Vector classy = x;Console.WriteLine(y.Value);y.Value = 50;Console.WriteLine(x.Value);Console.WriteLine("--------------------");Point a,b;a = new Point();a.X = 30;b = new Point();//下面有赋值,所以这里可省略b = a;Console.WriteLine(b.X);b.X = 50;Console.WriteLine(a.X);Console.WriteLine(b.X);return 0;}}
}
在C#中,结构体(struct)是值类型,这意味着它们在赋值时是通过值复制的方式来传递的
-
Point a, b;声明了两个Point类型的变量a和b。由于结构体是值类型,这两个变量会被初始化为默认值(在本例中,X和Y都是0)。 -
a = new Point();创建了一个新的Point实例,并将其赋值给变量a。 -
a.X = 30;将a的X属性设置为30。 -
b = new Point();创建了另一个新的Point实例,并将其赋值给变量b。这一步实际上不是必需的,因为你紧接着就重写了b的值。 -
b = a;将a的值复制给b。由于结构体是按值传递的,这里发生的是a的值(此时X是30)被复制给b。 -
Console.WriteLine(b.X);打印b的X属性,输出30。 -
b.X = 50;将b的X属性设置为50。由于b是a的一个副本,这个操作不会影响a。 -
Console.WriteLine(a.X);打印a的X属性,输出30,因为a和b是独立的副本。 -
Console.WriteLine(b.X);再次打印b的X属性,输出50。
关于 b = new Point(); 这一行代码可以省略的问题:
因为在执行 b = a; 之前,b 的值并不重要,因为它会被立即覆盖。省略这一行代码不会影响程序的行为,因为 b 会在赋值时得到 a 的副本。
相关文章:
C#类和结构体的区别
1、类class是引用类型,多个引用类型变量的值会互相影响。存储在堆(heap)上 2、结构体struct是值类型,多个值类型变量的值不会互相影响。存储在栈(stack)上 类结构关键字classstruct类型引用类型值类型存储…...
【RabbitMQ】RabbitMQ持久化
一、简介 RabbitMQ的持久化机制是一种确保数据在RabbitMQ服务重启或异常情况下不会丢失的重要特性。RabbitMQ的持久化主要包括三个方面的内容:交换器的持久化、队列的持久化、消息的持久化。 二、交换器的持久化 1、实现方式 在RabbitMQ中,实现交换器…...
算法刷题笔记 Kruskal算法求最小生成树(详细算法介绍,详细注释C++代码实现)
文章目录 题目描述基本思路实现代码 题目描述 给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。 最小生成树的概念:给定一张边带权的无向…...
5年经验的软件测试人员,碰到这样的面试题居然会心虚......
我们这边最近的面试机会比较多,但是根据他们的反馈,结束后大部分都没音信了,因为现在企业面试问的非常多,范围非常广,而且开放性的问题很多,很多人即便面试前刷了成百上千道面试题,也很难碰到一…...
C#进阶-轻量级ORM框架Dapper的使用教程与原理详解
本文详细介绍了Dapper在C#中的使用方法,包括Dapper的基本概念、与其他持久层框架的比较、基本语法和高级语法的使用,并通过实例讲解了如何在项目中集成和使用Dapper。Dapper以其高效的性能和简洁的API受到开发者的青睐,适用于各种数据库操作需…...
Windows图形界面(GUI)-MFC-C/C++ - 编辑框(Edit Control) - CEdit
公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 编辑框(Edit Control) - CEdit 基本概念 成员函数 示例代码 编辑框(Edit Control) - CEdit 基本概念 编辑框(Edit Control)是一个允许用户输入和编辑文本的窗…...
网络安全防御【IPsec VPN搭建】
目录 一、实验拓扑图 二、实验要求 三、实验思路 四、实验步骤: 修改双机热备的为主备模式: 2、配置交换机LSW6新增的配置: 3、防火墙(FW4)做相关的基础配置: 4、搭建IPsec VPN通道 (1…...
java环境配置与tomcat的配置
1、java环境配置 一、JDK下载 访问Oracle官网: 前往Oracle官网(Oracle | Cloud Applications and Cloud Platform),在首页的顶部菜单中选择“Resources” > “Downloads” > “Java” > “JDK”。注意:Orac…...
OD C卷 - 来自异国的客人/幸运数字
来自异国的客人/幸运数字(100) 输入描述: 输入k,n,m k表示物品价值(十进制) k>0 n表示幸运数字, n > 0 m表示异国采用的进制;m > 1 n < m 输出描述: 输出幸运数字的个数࿰…...
C++ | 动态内存管理 new、delete (用法、底层)详解
目录 简单回顾C语言动态内存管理 new、delete的用法 内置类型 new delete 自定义类型 new、delete底层讲解(重要) operator new 与 operator delete 定位 new 结语 简单回顾C语言动态内存管理 在C语言的学习阶段 我们接触到了三个能在堆上开辟…...
【C语言】结构体内存布局解析——字节对齐
🦄个人主页:小米里的大麦-CSDN博客 🎏所属专栏:https://blog.csdn.net/huangcancan666/category_12718530.html 🎁代码托管:黄灿灿 (huang-cancan-xbc) - Gitee.com ⚙️操作环境:Visual Studio 2022 目录 一、引言 二、什么是字节对齐&…...
模型表达方式
目录 一、模型表达概述 二、模型精确表达 2.1 几何表示 (Geometrical Representation) 三、模型非精确表达 3.1 网格表示 (Mesh Representation) 3.2 体素表示 (Voxel Representation) 一、模型表达概述 模型的表达方式多种多样,选择适合的表达方式取决于具体应用场景和…...
校园课程助手【4】-使用Elasticsearch实现课程检索
本节将介绍本项目的查询模块,使用Elasticsearch又不是查询接口,具体流程如图所示(如果不了解Elasticsearch可以使用sql语句进行查询): 这里是两种方法的异同点: Mysql:擅长事务类型操作&#…...
经典运维面试题
1、Linux常见的日志文件都有哪些,各自的用途?日志轮询配置文件在哪里?欢迎界面配置文件在哪里? /var/log/messages #内核及公共消息日志/var/log/cron #计划任务日志/var/log/dmesg #系统引导日志/var/log/malilog #邮件系…...
别再盲目推广了!Xinstall助你开启App线下推广新篇章
在这个数字化飞速发展的时代,App已经成为我们生活中不可或缺的一部分。然而,App市场的竞争也日益激烈,如何让你的App在众多竞争者中脱颖而出,成为每个推广者必须面对的问题。今天,就让我们一起探讨一下App线下推广的痛…...
大厂linux面试题攻略五之数据库管理
一、数据库管理-MySQL语句 0.MySQL基本语句: 1.SQL语句-增 创建xxx用户: mysql>create user xxx % indentified by 123456; xxx表示用户名 %b表示该用户用来连接数据库的方式(远程或本地连接) indentified by 123456设置密码…...
【pytorch】模型集成
在集成学习中,我们会训练多个模型(通常称为「弱学习器」)解决相同的问题,并将它们结合起来以获得更好的结果。最重要的假设是:当弱模型被正确组合时,我们可以得到更精确和/或更鲁棒的模型。 常用的模型集成…...
初识集合和数据结构
目录 初识集合框架数据结构基本概念和术语数据数据元素数据项数据对象前四者的关系数据结构逻辑结构和物理结构逻辑结构物理结构 算法算法设计要求 初识集合框架 Java的集合框架也可被称为容器,是定义在Java.util包下的一些接口和实现类。其就是将多个元素存储到一…...
cocos creator 3.x中动态加载 resources 文件夹下的图片时提示找不到
文件目录如下 类型为spriteFrame 代码案例 图片设置为 sprite-frame、texture 或其他图片类型后,将会在 资源管理器 中生成一个对应类型的资源。但如果直接加载 equipments/testea,得到的类型将会是 ImageAsset,必须指定路径到具体的子资源…...
第九十八周周报
学习时间: 2024.7.27-204.8.3 学习产出: 这周主要在按照审稿人的意见修改论文,由于有个模型保存的文件找不到了,所以重新训练花了点时间,目前已经把修改后的论文和cover letter发给杨老师了。...
Claude Remote Control 技术详解:跨设备无缝协作的远程会话控制方案
Claude Remote Control 技术详解:跨设备无缝协作的远程会话控制方案 声明: 📝 作者:甜城瑞庄的核桃(ZMJ) 原创学习笔记,欢迎分享,但请保留作者信息及原文链接哦~ 引言 在现代软件开发场景中,开发者经常需要在多个设备间切换工作环境。Claude Code 推出的 Remote Con…...
无限级数求和的Java实现与数学分析
本文旨在详细说明如何使用Java精确计算特定形式的无限级数 S -(2x)^2/2! (2x)^4/4! - (2x)^6/6! ... 在指定区间 [0.1, 1.5] 内部和。我们将深入分析等级数的数学性质,推导其闭合形式,并在此基础上纠正原始Java代码…...
NaViL-9B图文问答教程:支持中英双语提问的跨语言理解能力实测
NaViL-9B图文问答教程:支持中英双语提问的跨语言理解能力实测 1. 认识NaViL-9B NaViL-9B是一款原生多模态大语言模型,由专业研究机构开发。它最吸引人的特点是能够同时理解文字和图片内容,并且支持中文和英文两种语言的提问。想象一下&…...
Midscene.js终极指南:3步让AI帮你自动操作任何界面
Midscene.js终极指南:3步让AI帮你自动操作任何界面 【免费下载链接】midscene Let AI be your browser operator. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene Midscene.js是一个AI驱动的跨平台自动化工具,让你用自然语言就能控…...
OpenMPI进程绑定实战:如何用--bind-to和--map-by提升HPC应用性能(附Slurm配置示例)
OpenMPI进程绑定实战:NUMA架构下的性能优化与Slurm集成指南 1. 高性能计算中的进程绑定核心原理 在现代高性能计算环境中,CPU核心绑定技术已成为提升并行计算效率的关键手段。当我们在双路CPU服务器上运行计算密集型应用时,经常会遇到"一…...
SDMatte API接口开发教程:基于Python Flask构建标准化服务
SDMatte API接口开发教程:基于Python Flask构建标准化服务 1. 开篇:为什么需要API接口 如果你用过SDMatte这个强大的图像抠图工具,可能会遇到这样的场景:想把抠图功能集成到自己的应用里,或者需要批量处理大量图片。…...
如何设计优雅的RESTful API:Blade框架完整指南
如何设计优雅的RESTful API:Blade框架完整指南 【免费下载链接】blade :rocket: Lightning fast and elegant mvc framework for Java8 项目地址: https://gitcode.com/gh_mirrors/bl/blade 想要在Java 8中快速构建高性能、优雅的RESTful API吗?B…...
League-Toolkit:基于LCU API的英雄联盟智能辅助工具
League-Toolkit:基于LCU API的英雄联盟智能辅助工具 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在快节奏的MOBA游…...
pdf2htmlEX代码质量工具集成:将质量检查融入开发的完整指南
pdf2htmlEX代码质量工具集成:将质量检查融入开发的完整指南 【免费下载链接】pdf2htmlEX Convert PDF to HTML without losing text or format. 项目地址: https://gitcode.com/gh_mirrors/pd/pdf2htmlEX pdf2htmlEX作为一款强大的PDF转HTML工具,…...
告别SD卡!手把手教你用Vitis 2020.2把ZYNQ程序烧进QSPI Flash,实现上电自启动
从开发到量产:ZYNQ QSPI Flash程序固化全流程实战指南 在嵌入式系统开发中,从原型验证到产品量产往往需要跨越一道关键的技术门槛——程序固化。对于使用Xilinx ZYNQ系列芯片的开发者而言,如何将调试阶段依赖SD卡运行的程序,可靠地…...
