C# 对象和类型(结构)

类和结构的区别
字段、属性和方法
按值和引用传送参数
方法重载
构造函数和静态构造函数
只读字段
Object类,其他类型都从该类派生而来

结构

如何将类保持在堆中,通过这种方式可以在数据的生存期上获得很大的灵活性,但性能会有一定的损失。因托管堆的优化,这种行了损失比较小。有时需要一个小的数据结构。类提供的功能多于需要的功能,由于性能的原因,最好使用结构。

class Dimensions
{
    public double Length;

    public double Width;
}

结构的构造函数和属性:

struct Dimensions
{
    public double Length;

    public double Width;

    Dimensions(double length,double width)
    {
        Length=length;
        Width=width;
    }

    public int Diagonal
    {
        {
            get
            {
                return Math.Sqrt(Length*Length+Width*Width);
            }
        }
    }
}

结构与类区别

区别:
①结构是值类型,不是引用类型。它们存储在堆栈中或存储为内联(inline)(如果它们是另一个对象的一部分,就会保存在堆中),其生存期的限制与简单的数据类型一样。 ②结构不支持继承。 ③结构的构造函数的工作方式有一些区别。尤其是编译器总是提供一个无参数的默认构造函数,这是不允许替换的。

结构是值类型

结构遵循其他数据类型都遵循的规则:在使用前所有的元素都必须进行初始化。在结构上调用new运算符,或者给所有的字段分别赋值,结构就可以初始化。

结构和继承

结构不是为继承设计的。不能从一个结构中继承,唯一的例外是结构(C#中的其他类型一样)派生于类System.Object。结构也可访问System.Object的方法。在结构中,可以重写System.Object中的方法——例如重写ToString()方法。结构的基础链是:每个结构派生于System.ValueType,System.ValueType派生于System.Object。ValueType并没有给Object添加任何新成员,但提供一些更适合结构的执行代码。注意:不能为结构提供其他基类:每个结构都派生于ValueType。

结构的构造函数

给结构定义构造函数不允许定义无参数的构造函数。可以给结构提供Close()Dispose()方法。

本文由 mdnice 多平台发布

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

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

相关文章

NOVA:AutoRegressive Video Generation Without Vector Quantization——自回归视频生成无需向量量化

这篇文章介绍了一种名为NOVA的新型自回归模型,用于高效的文本到图像和文本到视频生成。以下是文章的主要内容总结: 1. 研究背景与问题 自回归大语言模型(LLMs)在自然语言处理(NLP)中表现出色,但…

eNSP之家——路由器--入门实例详解

eNSP路由器配置:IP、DHCP与DNS详解-CSDN博客 练习1:两个路由器配置ip地址,并用ping命令测试连通性。 打开ensp,拉进来两个路由器AR2220,再用auto连接两个路由器。 选中两个路由器,右键启动,等待半分钟路由…

imageio 图片转mp4 保存mp4

目录 安装: imageio 图片转mp4 numpy 保存mp4 安装: FFMPEG: pip install imageio[ffmpeg] pyav: pip install imageio[pyav] imageio 图片转mp4 import glob import osimport cv2 import imageio from natsort import natsortedfrom PIL import …

Spring 设计模式:经典设计模式

Spring 设计模式:经典设计模式 引言 Spring 框架广泛使用了经典设计模式。 这些模式在 Spring 内部发挥着重要作用。 通过理解这些设计模式在 Spring 中的应用,开发者可以更深入地掌握 Spring 框架的设计哲学和实现细节。 经典设计模式 控制反转&am…

HTML课堂之搜索工具箱/讲师duluo

目录: 源码在最后 小提示: 1.养成打卡习惯没日多加练习即可提什能力 2.源码在最后,请先看完代码讲解,在尝试自己写,这样容易掌握 3.请勿复制粘贴,因为你没掌握,即使复制粘贴也学不会 课堂重点笔…

根据docker file 编译镜像

比如给到一个Dockerfile 第一步编译镜像 cd /path/to/Dockerfiledocker build -t <DOCKER_IMAGE_NAME> . build 命令编译镜像 -t 镜像名字 . 指dockerfile 所在目录 如果遇到报错 [] Building 0.3s (3/3) FINISHED …

【HarmonyOS NEXT】鸿蒙应用点9图的处理(draw9patch)

【HarmonyOS NEXT】鸿蒙应用点9图的处理&#xff08;draw9patch&#xff09; 一、前言&#xff1a; 首先在鸿蒙中是不支持安卓 .9图的图片直接使用。只有类似拉伸的处理方案&#xff0c;鸿蒙提供的Image组件有与点九图相同功能的API设置。 可以通过设置resizable属性来设置R…

STM32-笔记39-SPI-W25Q128

一、什么是SPI&#xff1f; SPI是串行外设接口&#xff08;Serial Peripheral Interface&#xff09;的缩写&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;并且 在芯片的管脚上只占用四根线&#xff0c;节约了芯片的管脚&#xff0c;同时为…

pytest和unittest的区别

pytest 和 unittest 是 Python 中常用的两个测试框架。以下是对 pytest 和 unittest 的详细对比和说明&#xff1a; 目录 1. 简洁性和易用性 2. 灵活性和特性 3. 断言机制 4. 插件和扩展 5. 参数化测试 1. 简洁性和易用性 unittest 风格&#xff1a;unittest 是基于 x…

【微服务】8、分布式事务 ( XA 和 AT )

文章目录 利用Seata解决分布式事务问题&#xff08;XA模式&#xff09;AT模式1. AT模式原理引入2. AT模式执行流程与XA模式对比3. AT模式性能优势及潜在问题4. AT模式数据一致性解决方案5. AT模式一阶段操作总结6. AT模式二阶段操作分析7. AT模式整体特点8. AT模式与XA模式对比…

CTF知识点总结(三)

空格绕过方式&#xff1a; $IFS ${IFS} $IFS$数字 < <> 三种绕过方式&#xff1a; 1.sh /?ip127.0.0.1;echo$IFS$2Y2F0IGZsYWcucGhw|base64$IFS$2-d|sh 2.变量拼接 /?ip127.0.0.1;ag;cat$IFS$2fla$a.php 3.内联注释(将反引号命令的结果作为输入来执行命令) /?i…

《Spring Framework实战》5:Spring Framework 概述

欢迎观看《Spring Framework实战》视频教程 Spring 使创建 Java 企业应用程序变得容易。它为您提供一切 需要在企业环境中采用 Java 语言&#xff0c;并支持 Groovy 和 Kotlin 作为 JVM 上的替代语言&#xff0c;并且可以灵活地创建许多 类型的架构。从 Spring Framework 6.0 开…

解决npm报错:sill idealTree buildDeps

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 报错信息 使用 npm 安装依赖时报错&#xff1a;sill idealTree buildDeps 解决方案 请按照以下步骤进行相关操作&#xff1a; 1、删除 C:\Users{账户}\ 文件夹中的 .npm…

【什么是MVCC?】

MVCC&#xff08;Multi - Version Concurrency Control&#xff09;即多版本并发控制。 一、背景和概念 在数据库系统中&#xff0c;并发控制是非常重要的。当多个事务同时访问和修改数据时&#xff0c;需要一种机制来确保数据的一致性和正确性。MVCC 是一种并发控制的技术&a…

递归构建树菜单节点

一、获取所有分类上下级信息 /*** 获取所有分类上下级信息*/ public R<List<ResearchTypeTreeVO>> getTypeTreeList(){//获取所有分类数据List<ResearchTypeVO> list ibResearchTypeService.getSuperList(null);List<ResearchTypeTreeVO> researchTy…

PHP语言的正则表达式

PHP语言中的正则表达式详解 引言 在编程中&#xff0c;字符串处理是一个非常常见的问题&#xff0c;而正则表达式&#xff08;Regular Expressions&#xff0c;简称Regex&#xff09;则是高效处理字符串的强大工具。PHP作为一种广泛应用的服务器端编程语言&#xff0c;也提供…

键盘过滤驱动

概述 irp请求会从io管理器中传递到设备栈中依次向下发送&#xff0c;当到达底层真实设备处理完成后&#xff0c;会依次返回&#xff0c;这时如果在设备栈中有我们自己注册的设备&#xff0c;就可以起到一个过滤的功能。键盘过滤驱动就是如此&#xff0c;通过附加到原本存在的设…

Ubuntu上安装Apache Spark

在Ubuntu上安装Apache Spark的步骤如下&#xff1a; 1. 安装Java Spark是用Scala编写的&#xff0c;并且依赖Java。因此&#xff0c;首先需要安装Java。 安装OpenJDK 8&#xff08;或更高版本&#xff09; 执行以下命令安装OpenJDK&#xff1a; sudo apt update sudo apt …

formik 的使用

礼记有言&#xff1a;独学而无友&#xff0c;则孤陋而寡闻 让我们一起了解更多便捷方法&#xff0c;缩短开发时间去摸鱼&#xff0c;嘿嘿。 框架&#xff1a;react 在写表单的时候&#xff0c;我不太喜欢把验证写的很繁琐&#xff0c;这里讲介绍&#xff0c;验证表单的非常好用…

JVM实战—OOM的生产案例

1.每秒仅上百请求的系统为何会OOM(RPC超时时间设置过长导致QPS翻几倍) (1)案例背景 在这个案例中&#xff0c;一个每秒仅仅只有100请求的系统却因频繁OOM而崩溃。这个OOM问题会涉及&#xff1a;Tomcat底层工作原理、Tomcat内核参数的设置、服务请求超时时间。 (2)系统发生OOM的…