C# 结构与类的区别
一、定义方式
定义结构:
struct PointStruct //默认的访问权限是 public { public int X { get; set; } public int Y { get; set; } public PointClass(int x, int y){X = x;Y = y;}}
定义类:
class PointClass //默认的访问权限是 private {public int X { get; set; }public int Y { get; set; }public PointClass(int x, int y){}}
首先,声明所使用的关键字: 使用 struct 声明结构,使用 class 声明类。
其次,默认的访问权限: 结构的默认访问权限是 public,而类的默认访问权限是 private。
然后,声明的变量的初始值: 在类里面声明变量可以给初始值,但在结构体中声明的变量是不可以赋初始值的。
最后,构造函数: 结构体不能显式定义无参数的构造函数,并且结构体中的构造函数中必须给该结构体的所有字段赋值;但是类的构造函数中可以不给字段赋值。
二、存储及赋值
结构是值类型(存储的是数据的值),当其作为局部变量的时候是存储在堆栈空间内的,其对象的字段值是直接存储在这个变量中的。(堆栈的空间有限,但存取速度快,处理效率要比堆的效率高)
类是引用类型(存储的是对实际数据的引用),存储在托管堆中。(托管堆的空间较大,但速度要比堆栈慢)
值类型与引用类型是结构和类的最大
三、选择“结构”还是选择“类”?
结构是值类型,所以结构体就是当成值来使用的;而类是引用类型,所以类是通过引用来对实际数据进行造作的。
因为堆栈的存储速度快(但空间有限),所以,我们在写一个轻量级的对象(只需要少量的字段)的时候,一般选用结构来写。
而当我们在描述一个重量级的对象的时候,一般选用的都是类的实现方式。
转载于:https://www.cnblogs.com/zhangchaoran/p/10336937.html
C# 结构与类的区别相关推荐
- c#中结构与类的区别
类与结构的差别 如何选择结构还是类 一.类与结构的示例比较: 结构示例: public struct Person { string Name; int height; int weight pub ...
- c#中结构与类的区别(转)
目录 类与结构的实例比较<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" / ...
- [转载]:C# 中结构与类的区别
转载自:http://www.cftea.com/c/2008/03/JHB3MJM8DYGS0JJ9.asp 完美集成.增强 KindEditor HTML 编辑器 目录 类与结构的实例比较 类与结 ...
- 【知识积累】C#中结构体和类的区别
[类] 类是对现实生活中一类具有共同特征的事物的抽象.类的实质是一种数据类型,类似于int.char等基本类型,不同的是它是一种复杂的数据类型.因为它的本质是类型,而不是数据,所以不存在于内存 ...
- c++中 结构体和类的区别
区别: 结构是一种用关键字struct声明的自定义数据类型.与类相似,也可以包含构造函数,常数,字段,方法,属性,索引器,运算符和嵌套类型等,不过,结构是值类型. 1.结构的构造函数和类的构造函数不同 ...
- swift string转int_swift中结构体和类的区别(值类型和引用类型的区别)
在swift中结构体和类有着更多的相同之处,在一般的使用中能够做到互相替换.我们可以先看看官方文档的描述: Unlike other programming languages, Swift does ...
- C#中的结构和类之间的区别
C#类和结构 (C# class and structure) In C# and other programming languages, structure and classes are use ...
- 十三、CSS 3新特性详解(一)——属性、结构伪类、伪元素选择器,nth-child与nth-of-type区别,2D rotate,calc函数、滤镜filter、过渡transition
七.CSS3 属性选择器(上) 什么是 CSS3 在 CSS2 的基础上拓展.新增的样式 CSS3 发展现状 移动端支持优于 PC 端 CSS3 目前还草案,在不断改进中 CSS3 相对 H5,应用非 ...
- 【唐老狮】C#——结构体和类的区别
[结构体和类的区别] 结构体是值类型,类是引用类型 结构体存在栈中,类存在堆中 结构体成员不能使用protected访问修饰符,而类可以 结构体成员变量申明不能指定初始值,而类可以 结构体不能申明无参 ...
最新文章
- python生成饼图文件_python使用HTMLTestRunner导出饼图分析报告的方法
- (转)我的座驾见谁灭谁!
- 新消费风口再“热闹”,红利依然握在伊利、康师傅们手里
- DengAI —数据预处理
- mysql 参数bug_MySQL 的这个 BUG,坑了多少人?
- lamda 对比两个list_正式支持多线程!Redis 6.0与老版性能对比评测
- html表白特效源代码_程序员如何在七夕节表白
- 计算机毕业设计源码分享双鱼林,计算机毕业课程设计论文源码-057双鱼林asp教务选课信息系统...
- linux下无权限安装anaconda和tensorflow-gpu
- 域迁移过程下详细步骤
- mybatis-generator
- char,varchar,nvarchar以及datetime和smalldatetime的区别
- python添加音乐_python给视频添加背景音乐并改变音量的具体方法
- 项目:识别Twitter用户性别
- 数据库建模工具ER Studio 8 安装破解总结
- 『码上行动-编程擂台』学员作品展(附源码)
- 13. 如何打破白天开会、晚上加班的节奏
- WebSocket实现聊天功能
- 第4章 虚拟机性能监控、故障处理工具(上)
- 深入浅出Pytorch函数——torch.arange