做爰全过程免费网站的视频教程网站资讯创作

news/2025/10/3 19:44:09/文章来源:
做爰全过程免费网站的视频教程,网站资讯创作,自主建站网站平台,比较不同类型网站栏目设置区别本文将介绍以下内容#xff1a; • 面向对象基本概念 • 类和结构体简介 • 引用类型和值类型区别 1. 引言 提起class和struct#xff0c;我们首先的感觉是语法几乎相同#xff0c;待遇却翻天复地。历史将接力棒由面向过程编程传到面向对象编程#xff0c;class和stru…本文将介绍以下内容 • 面向对象基本概念 • 类和结构体简介 • 引用类型和值类型区别 1. 引言 提起class和struct我们首先的感觉是语法几乎相同待遇却翻天复地。历史将接力棒由面向过程编程传到面向对象编程class和struct也背负着各自的命运前行。在我认为struct英雄迟暮class天下独行最本质的区别是class是引用类型而struct是值类型它们在内存中的分配情况有所区别。由此产生的一系列差异性本文将做以全面讨论。  2. 基本概念 2.1. 什么是class? class类是面向对象编程的基本概念是一种自定义数据结构类型通常包含字段、属性、方法、属性、构造函数、索引器、操作符等。因为是基本的概念所以不必在此详细描述读者可以查询相关概念了解。我们重点强调的是.NET中所有的类都最终继承自System.Object类因此是一种引用类型也就是说new一个类的实例时对象保存了该实例实际数据的引用地址而对象的值保存在托管堆managed heap中。  2.2. 什么是struct? struct结构是一种值类型用于将一组相关的信息变量组织为一个单一的变量实体 。所有的结构都继承自System.ValueType类因此是一种值类型也就是说struct实例分配在线程的堆栈stack上它本身存储了值而不包含指向该值的指针。所以在使用struct时我们可以将其当作int、char这样的基本类型类对待。 3. 相同点不同点 相同点语法类似。 不同点 class是引用类型继承自System.Object类struct是值类型继承自System.ValueType类因此不具多态性。但是注意System.ValueType是个引用类型。从职能观点来看class表现为行为而struct常用于存储数据。class支持继承可以继承自类和接口而struct没有继承性struct不能从class继承也不能作为class的基类但struct支持接口继承记得吗《第二回对抽象编程接口和抽象类》也做过讨论class可以声明无参构造函数可以声明析构函数而struct只能声明带参数构造函数且不能声明析构函数。因此struct没有自定义的默认无参构造函数默认无参构造器只是简单地把所有值初始化为它们的0等价值实例化时class要使用new关键字而struct可以不使用new关键字如果不以new来实例化struct则其所有的字段将处于未分配状态直到所有字段完成初始化否则引用未赋值的字段会导致编译错误。class可以实抽象类abstract可以声明抽象函数而struct为抽象也不能声明抽象函数。class可以声明protected成员、virtual成员、sealed成员和override成员而struct不可以但是值得注意的是struct可以重载System.Object的3个虚方法Equals()、ToString()和GetHashTable()。class的对象复制分为浅拷贝和深拷贝该主题我们在本系列以后的主题中将重点讲述本文不作详述必须经过特别的方法来完成复制而struct创建的对象复制简单可以直接以等号连接即可。class实例由垃圾回收机制来保证内存的回收处理而struct变量使用完后立即自动解除内存分配。作为参数传递时class变量是以按址方式传递而struct变量是以按值方式传递的。 我们可以简单的理解class是一个可以动的机器有行为有多态有继承而struct就是个零件箱组合了不同结构的零件。其实class和struct最本质的区别就在于class是引用类型内存分配于托管堆而struct是值类型内存分配于线程的堆栈上。由此差异导致了上述所有的不同点所以只有深刻的理解内存分配的相关内容才能更好的驾驭。本系列将再以后的内容中将引用类型和值类型做以深入的比较和探讨敬请关注。当然正如本文标题描述的一样使用class基本可以替代struct的任何场合class后来居上。虽然在某些方面struct有性能方面的优势但是在面向对象编程里基本是class横行的天下。 那么有人不免会提出既然class几乎可以完全替代struct来实现所有的功能那么struct还有存在的必要吗答案是至少在以下情况下鉴于性能上的考虑我们应该考虑使用struct来代替class 实现一个主要用于存储数据的结构时可以考虑struct。struct变量占有堆栈的空间因此只适用于数据量相对小的场合。结构数组具有更高的效率。提供某些和非托管代码通信的兼容性。 所有这些是struct有一席之地的理由当然也许还有其他的更多说法只是我不知道罢了:-) 4. 经典示例 4.1 小菜一碟 下面以示例为说明来阐述本文的基本规则详细见注释内容。 1定义接口 interface IPerson     {         void GetSex();     } 2定义类 public class Person     {         public Person()         {          }         public Person(string name, int age)         {             _name  name;             _age  age;         }         private string _name;         public string Name         {           get { return _name; }           set { _name  value; }         }         private int _age;         public int Age         {           get { return _age; }           set { _age  value; }         }      } 3定义结构 //可以继承自接口不可继承类或结构     struct Family: IPerson     {         public string name;         public int age;         public bool sex;         public string country;         public Person person;         //不可以包含显式的无参构造函数和析构函数         public Family(string name, int age, bool sex, string country, Person person)         {             this.name  name;             this.age  age;             this.sex  sex;             this.country  country;             this.person  person;         }         //不可以实现protected、virtual、sealed和override成员         public void GetSex()         {             if (sex)                 Console.WriteLine(person.Name   is a boy.);             else                 Console.WriteLine(person.Name   is a girl.);         }         public void ShowPerson()         {             Console.WriteLine(This is {0} from {1}, new Person(name, 22).Name, country);         }         //可以重载ToString虚方法         public override string ToString()         {             return String.Format({0} is {1}, {2} from {3}, person.Name, age, sex ? Boy : Girl, country);         }     } 4测试结构和类 猜猜运行结果如何可以顺便检查检查对这个概念的认识。 4.2 .NET研究 在.NET 框架中System.Drawing命名空间中的有些元素如System.Drawing.Point就是实现为struct而不是class。其原因也正在于以上介绍的各方面的权衡大家可以就此研究研究可以体会更多。另外还有以struct实现的System.Guid。 5. 结论 对基本概念的把握是我们进行技术深入探索的必经之路本系列的主旨也是能够从基本框架中提供给大家一个通向高级技术的必修课程。本文关于class和struct的讨论就是如此在.NET框架中关于class和struct的讨论将涉及到对引用类型和值类型的认识并且进一步将触角伸向变量内存分配这一高级主题所以我们有必要来了解其运行机制把握区别和应用场合以便在平常的系统设计中把握好对这一概念层次的把握。 另外请大家就以下问题进行讨论希望能够更加清晰本文的拓展 struct还主要应用在哪些方面 C和C#中关于struct的应用又有所不同这些不同又有哪些区别参考文献 USAStanley B.Lippman, C# Primer USAC# in a Nutshell 温故知新 [开篇有益] [第一回恩怨情仇is和as] [第二回对抽象编程接口和抽象类]  [第三回历史纠葛特性和属性]

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

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

相关文章

学校网站管理与建设办法怎样建立自己购物网站

主流开发语言 Java 简介:Java 是一种广泛使用的面向对象的编程语言,由Sun Microsystems公司于1995年发布,后由Oracle公司接手。Java具有“一次编写,到处运行”的特性,它的跨平台能力得益于Java虚拟机(JVM&a…

东莞网站设计公司排名企业网站建设感想

在 Oracle 数据库中,你可以使用 ALTER TABLE 语句来添加字段,并使用 COMMENT ON COLUMN 语句来添加字段注释。以下是一个示例: 假设你有一个名为 employees 的表,你想要添加一个名为 email 的字段,并为其添加注释。 …

最新企业网站开发和设计软件个人域名可以做公司网站么

简介: 淘宝搜索推荐、视频搜索的背后使用了什么样的检索技术?非结构化数据检索,向量检索,以及多模态检索,它们到底解决了什么问题?今天由阿里巴巴达摩院的科学家从业务问题出发,抽丝剥茧&#x…

前端如何优雅地生成唯一标识?——一份跨环境 UUID 设备函数的封装与实战

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

广州网站建设外包公司网站建设情况自查报告

1、syntax"proto3":表明使用的是proto3格式,如果不指定则为proto22、package test:定义包名为test,生成类时,会产生一个目录为test3、message Person:消息主体内容,里面为各个字段的定义二、生成对应的PHP类定义好Perso…

解码红黑树

红黑树全面解析:从设计逻辑到代码落地 红黑树是自平衡二叉搜索树(Self-Balanced BST) 的经典实现,核心解决了普通 BST 失衡、AVL 树过度平衡的问题。它通过 “颜色约束” 实现 “大致平衡”,兼顾查找性能与插入 /…

苹果首款折叠屏iPhone全爆料汇总:明年9月发布、1.3万元起步

苹果首款折叠屏iPhone全爆料汇总:明年9月发布、1.3万元起步Posted on 2025-10-03 19:30 lzhdim 阅读(0) 评论(0) 收藏 举报从多方权威爆料基本可以确定,苹果将会在明年9月发布首款可折叠iPhone,与iPhone 18 Pr…

英文笔记

column 列 float 浮动 margin 边距 font 字体 border 边框 radius 圆角 background 背景 color 颜色 padding 填充

苹果最强平板!M5版iPad Pro开箱上手提前泄露:升级12GB内存 GPU性能大涨

苹果最强平板!M5版iPad Pro开箱上手提前泄露:升级12GB内存 GPU性能大涨Posted on 2025-10-03 19:30 lzhdim 阅读(0) 评论(0) 收藏 举报日前,俄罗斯博主Wylsacom提前发布M5芯片版iPad Pro开箱视频,甚至还在Gee…

深入解析:深入MySQL、JVM与Maven核心原理​

深入解析:深入MySQL、JVM与Maven核心原理​2025-10-03 19:32 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bl…

创世网站建设 优帮云山西省住房和城乡建设厅门户网官方网站

上一次我们讲了使用Azure DevOps Pipeline实现.Net Core程序的CI。这次我们来演示下如何使用Azure DevOps实现.Net Core程序的CD。实现本次目标我们除了Azure DevOps外还需要:一台安装了Docker的主机一个 Docker Hub 账号上一次我们的CI实现了:发布>编…

网站域名备案后公示南宁做网站比较好的公司

目录 1.动态内存分配的原因 2.动态内存函数的介绍 2.1malloc和free函数 2.2calloc函数 2.3realloc函数 3. 常见的动态内存错误 3.1 对NULL指针的解引用操作 3.2 对动态开辟空间的越界访问 3.3 对非动态开辟内存使用free释放 3.4 使用free释放一块动态开辟内存的一部…

10/3

今日下起了大雨,我在家背诵了单词

专注手机网站建设中国工程建设管理协会网站

前言 关于 .NET Core 旧版本的 sdk 介绍可以参看我以前的 这篇 文章。 8 个小时前,.NET Core 项目组释放了 .NET Core 新一轮的 sdk 工具更新,即 RC4 版本 ,这个版本也就是意味着基本功能已经确定了,下个版本应该就是RTM版了&…

后台网站模板html口碑营销的优缺点

Java中的输入输出(I/O)流是用于读取和写入数据的机制。在Java中,I/O流被设计为按照流的方向和数据源/目标类型进行分类。流的方向分为输入流和输出流,而数据源/目标类型则分为字节流和字符流。 流的方向: 输入流&…

推荐一款集成AI能力的数据库管理工具

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Netflix确保数亿用户观影体验的“事件”管理是如何构建与实践的?

在流媒体服务随时可能因系统故障而中断的时代,Netflix 如何确保数亿用户的观影体验始终稳定?本文将揭晓其技术团队的关键实践 —— 从中央 SRE 团队独揽事件管理,到让每个工程师都能主动发起并处理事件的转型之路。…

为什么词嵌入可以和位置编码相加

一、引言 一个非常朴素的直觉是: 词嵌入是语义,位置编码是词的位置。这两者本身是不同的量纲,就跟身高和体重一样,他们之间有关系,而且我们可以找到他们之间的关系,比如BMI,但是直接把身高(cm)和体重(kg)加…

【比赛记录】2025CSP-S模拟赛57

A B C D Sum Rank100 60 15 - 175 8/22A. 开挂 首先我们希望总步数最小,排序后一次使每个数成为大于它的最小的数即可。 然后根据排序不等式,我们希望修改操作尽可能的集中,倒着扫即可。此时需要确定比这个数大的最…