结构是一种值类型,使用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结构知识总结的更多相关文章

  1. C# Struct结构体里数组长度的指定

    typedef struct Point{ unsigned short x; unsigned short y; }mPoint;//点坐标 typedef struct Line{ mPoint ...

  2. C#基础--struct(结构体)

    结构体和类有点类似    我们定义一个类的时候    是class   类名   定义结构体的时候是 struct   结构体名 结构体的写法 struct Point { // public int ...

  3. 1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组

    一.程序 现实生活中,程序是指完成某些事务的一种既定方法和过程,可以把程序看成是一系列动作执行过程的描述. 在计算机世界,程序是指令,即为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集 ...

  4. Golang struct结构

    结构struct Go中的struct与C中的struct非常相似,并且Go没有class,代替了class的位置,但并没有代替class的功能 使用type struct{} 定义结构,名称遵循可见 ...

  5. C#语言struct结构体适用场景和注意事项

    在C#语言中struct结构体和class之间的区别主要是值类型和引用类型的区别,但实际上如果使用不当是非常要命的.从Win32时代过来的人对于struct一点不感觉陌生,但是却反而忽略了一些基本问题 ...

  6. C语言 Struct 结构体在 Java 中的体现

    大一整个学期完成了 C 语言的学习,大二就进入了Java 的学习. 和C语言一样,我们都会尝试写一个小小的学生管理系统什么的,学习过 C 语言同学知道,在管理系统中 Struct 结构体是个很好用的东 ...

  7. P Invoke struct结构

    一.获取Struct CHCNetSDK.NET_DVR_PTZPOS pos = new CameraTest.CHCNetSDK.NET_DVR_PTZPOS(); int size = Mars ...

  8. Swift Struct 结构体

    前言 Swift 语言有两种基本的数据类型,即类(class)和结构体(struct),class 这样的概念大家不会陌生,而 struct 也并不是什么新的概念,在 Objective-C 和 C ...

  9. go struct结构体

    struct结构体 用来自定义复杂数据结构 struct里面可以包含多个字段(属性),字段可以是任意类型 struct类型可以定义方法,注意和函数的区分 struct类型是值类型 struct类型可以 ...

随机推荐

  1. SilverFish

    noHero123/silverfish https://github.com/noHero123/silverfish/blob/master/HrtBddy/instructions.txt Ho ...

  2. Mac 卸载mysql

    sudo rm /usr/local/mysql sudo rm -rf /usr/local/mysql* sudo rm -rf /Library/StartupItems/MySQLCOM su ...

  3. 火车购票问题(16年ccf)

    火车购票问题(16年ccf) 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一 ...

  4. POJ 3083 -- Children of the Candy Corn(DFS+BFS)TLE

    POJ 3083 -- Children of the Candy Corn(DFS+BFS) 题意: 给定一个迷宫,S是起点,E是终点,#是墙不可走,.可以走 1)先输出左转优先时,从S到E的步数 ...

  5. 性能测试 | 系统运行缓慢,CPU 100%,Full GC次数过多问题排查

    处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题.当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警.本文主要针对系统运行缓慢这 ...

  6. js 操作select和option常见用法

    1.获取选中select的value和text,html <select id="mySelect"> <option value="1"&g ...

  7. backbone之collection

    最近要用到backbone.js,网上也找了些资料,但是就看到一个开头还可以,往下看基本就看不下去了,幸好有这本书[LeanpubRead] Backbone.Marionette.js A Gent ...

  8. 九十一:CMS系统之cms用户模型定义

    数据库信息 DEBUG = TrueSQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@127.0.0.1:3306/test'SQLALCH ...

  9. [Distributed ML] Yi WANG's talk

    王益,分布式机器学习的践行者,他的足迹值得后来者学习. 膜拜策略: LinkedIn高级分析师王益:大数据时代的理想主义和现实主义(图灵访谈)[心路历程] 分布式机器学习的故事-王益[历史由来] 分布 ...

  10. 在Java中使用元组类型的利器

    Java本身并没有内置元组这一项特性,要使用元组必须自行实现,所幸现在这些编程语言都支持泛型, 实现非内置元组也变的异常简单, 但是毕竟是非语言内置的语法元素,使用起来肯定不如原生元组来的便捷. 下面 ...