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类型可以 ...
随机推荐
- No Desktop License Servers available to provide a license
远程桌面连接失败,提示:“no Remote Desktop License Servers available to provide a license” 原因:没有remote desktop l ...
- 在debian下安装QT 5.10 32位
准备工作: 在开始之前最好把GCC升级到5.0以上. 如果升级后出现“libstdc++.so.6: version `CXXABI_1.3.9' not found”错误,可以参考https://b ...
- Kafka 概述
Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域. Kafka 中,客户端和服务器之间的通信是通过 TCP 协议完成的. 一.传统消息 ...
- 如何用MATLAB GUI创建图形用户界面
MATLAB是众多理工科学生及工程师经常使用的一款数学软件,除了可以实现数据处理,矩阵运算.函数绘制等功能外,MATLAB还可以实现图形用户界面的设计. 下面介绍如何让小白也能用GUI创建最基本的用户 ...
- ossfs挂载oss到ECS本地并设置权限
下载ossfs wget https://github.com/aliyun/ossfs/releases/download/v1.80.2/ossfs_1.80.2_ubuntu16.04_amd6 ...
- 使用Pull解析器生成XML文件
有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使 ...
- [Feature] Build pipeline
准备数据集 一.数据集 Ref: 6. Dataset loading utilities[各种数据集选项] 第一部分,加载原始iris数据集的数据: 第二部分,先增加一行,再增加一列: #%% pa ...
- HBase管理与监控——内存调优
HMaster 没有处理过重的负载,并且实际的数据服务不经过 HMaster,它的主要任务有2个:一.管理Hbase Table的 DDL操作, 二.region的分配工作,任务不是很艰巨. 但是如果 ...
- 同步pod容器内时区
同步pod容器内时区 .直接修改镜像的时间设置,好处是应用部署时无需做特殊设置,但是需要手动构建Docker镜像. .部署应用时,单独读取主机的“/etc/localtime”文件,即创建pod时同步 ...
- iptable和tcpdump的先后顺序
tcpdump是一个用来抓取linux网络数据包的工具,而iptables是linux上的防火墙工具,两者之间的顺序是: Wire -> NIC -> tcpdump -> netf ...