C# struct结构知识总结
结构是一种值类型,使用struct关键字定义。
结构可以包含字段、常量、事件、属性、方法、构造函数、索引器、运算符和嵌套类型。但若结构中同时需要上述所有成员,应考虑将结构改为类。
- 嵌套类型:在类或构造中定义的类型称为嵌套类型。
结构的构造函数中,必须对所有字段赋值,否则编译器会报错
struct Dimensions
{
public double length,width;
public string testField; public Dimensions(double length,double width,string testField)
{
this.length = length;
this.width = width;
this.testField = testField;
} public double Diagonal
{
get
{
return Math.Sqrt(length * length + width * width);
}
} public string TestProperty
{
get
{
return testField;
}
}
}
可以像类一样通过new关键字对结构进行实例化。此时,若使用无参构造函数,则所有成员都分配为默认值(类也如此)。
也可以不使用new运算符。此时,结构使用前所有元素都必须进行初始化(为所有字段分别赋值),否则编译器会报错。
static void Main(string[] args)
{
//通过new运算符,使用默认无参构造函数,对结构实例化
Dimensions point = new Dimensions();
point.length = ;
Console.WriteLine(point.Diagonal);
Console.WriteLine(point.TestProperty??"显示null"); //不使用new运算符对结构实例化
Dimensions point2;
point2.length = ;
point2.width = ;
point2.testField = "testField";
Console.WriteLine(point2.Diagonal);
Console.WriteLine(point2.TestProperty); TestClass test = new TestClass();
Console.WriteLine(test.age);
Console.WriteLine(test.Name ?? "123null");
}
输出:

注意:
- 结构中不能初始化实例字段,静态字段可以。
- 结构不能显示声明默认无参构造函数。
- 结构可以实现接口。
- 一个结构无法继承自另一个结构或类,并且不能成为类的基类。
参考来源:
《C#高级编程(第9版)》
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/struct
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/structs
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/using-structs
C# struct结构知识总结的更多相关文章
- C# Struct结构体里数组长度的指定
typedef struct Point{ unsigned short x; unsigned short y; }mPoint;//点坐标 typedef struct Line{ mPoint ...
- C#基础--struct(结构体)
结构体和类有点类似 我们定义一个类的时候 是class 类名 定义结构体的时候是 struct 结构体名 结构体的写法 struct Point { // public int ...
- 1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组
一.程序 现实生活中,程序是指完成某些事务的一种既定方法和过程,可以把程序看成是一系列动作执行过程的描述. 在计算机世界,程序是指令,即为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集 ...
- Golang struct结构
结构struct Go中的struct与C中的struct非常相似,并且Go没有class,代替了class的位置,但并没有代替class的功能 使用type struct{} 定义结构,名称遵循可见 ...
- C#语言struct结构体适用场景和注意事项
在C#语言中struct结构体和class之间的区别主要是值类型和引用类型的区别,但实际上如果使用不当是非常要命的.从Win32时代过来的人对于struct一点不感觉陌生,但是却反而忽略了一些基本问题 ...
- C语言 Struct 结构体在 Java 中的体现
大一整个学期完成了 C 语言的学习,大二就进入了Java 的学习. 和C语言一样,我们都会尝试写一个小小的学生管理系统什么的,学习过 C 语言同学知道,在管理系统中 Struct 结构体是个很好用的东 ...
- P Invoke struct结构
一.获取Struct CHCNetSDK.NET_DVR_PTZPOS pos = new CameraTest.CHCNetSDK.NET_DVR_PTZPOS(); int size = Mars ...
- Swift Struct 结构体
前言 Swift 语言有两种基本的数据类型,即类(class)和结构体(struct),class 这样的概念大家不会陌生,而 struct 也并不是什么新的概念,在 Objective-C 和 C ...
- go struct结构体
struct结构体 用来自定义复杂数据结构 struct里面可以包含多个字段(属性),字段可以是任意类型 struct类型可以定义方法,注意和函数的区分 struct类型是值类型 struct类型可以 ...
随机推荐
- 微擎转移服务器后,出现 require()错误,解决方案
微擎中切换服务器后出现该问题,有可能是导致配置的问题
- 黑马lavarel教程---9、缓存操作
黑马lavarel教程---9.缓存操作 一.总结 一句话总结: legend2项目中自己写的哪些文件操作都可以通过这里的缓存实现,简单方便 1.lavarel中如何使用后端主流的缓存如 Memcac ...
- zabbix自定义监控,自定义图表。
zabbix server:hostname=Zabbix server ip:192.168.100.7 zabbix agent: hostname=host3 ip:192.168.100.3 ...
- 关于本电脑qt5.11+vs2017+opencv3.4的配置问题
本人想用qt5.11+vs2017+opencv3.4开发程序,配置了很久才成功,现在把配置后的环境变量记录一下,以供自己以后参考,同时也供大家参考. qt5.11+vs2017+opencv3.4的 ...
- centos7 安装 ftp 服务及创建 repo源
安装 ftp 服务 安装和启动服务:# yum install vsftpd# systemctl enable vsftpd# systemctl start vsftpd 配置文件: vi /et ...
- Android通讯-webSocket
概述 上一篇简单的认识了Socket以及他的使用,在学习过程中看到了WebSocket的身影,于是乎百度了一把,这货也可以做全双工的网络通讯,而且是html5提出来的新东西!程序员嘛!就是要对新的东西 ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-7.接口配置文件自动映射到属性和实体类配置
笔记 7.接口配置文件自动映射到属性和实体类配置 简介:使用@value注解配置文件自动映射到属性和实体类 1.添加 @Component或者Configuration 注解: ...
- Linux Shell 自动备份脚本
写一个使用shell脚本增量备份系统文件,顺便复习一下shell脚本相关的命令,这个脚本可以根据自己的需求来备份不同的文件或者文件夹,进行完整备份和增量备份. 参考的网址:http://blog.51 ...
- 【Hadoop】MapReduce练习:多job关联实现倒排索引
概述 倒排索引(英语:Inverted index),也常被称为反向索引.置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射.它是文档检索系统中 ...
- Docker Swarm常用命令
#查看集群节点 docker node ls #创建nginx服务 #docker pull hub.test.com:5000/almi/nginx:0.1 #下载私有仓库镜像 docker ser ...