亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C# 结构体完全指南:定义、特性、与类的区别及实战

C# 中结构体是值类型数据类型,用struct关键字创建。结构体让单个变量持有多种数据类型的相关数据,常用于表示记录。

定义结构体

使用 struct 语句定义新数据类型,包含多个成员:

struct Books {
    public string title;
    public string author;
    public string subject;
    public int book_id;
}

使用示例

using System;
struct Books {
    public string title;
    public string author;
    public string subject;
    public int book_id;
}

public class testStructure {
    public static void Main(string[] args) {
        Books Book1, Book2;
        
        Book1.title = "C Programming";
        Book1.author = "Nuha Ali";
        Book1.subject = "C Programming Tutorial";
        Book1.book_id = 6495407;
        
        Book2.title = "Telecom Billing";
        Book2.author = "Zara Ali";
        Book2.subject = "Telecom Billing Tutorial";
        Book2.book_id = 6495700;
        
        Console.WriteLine("Book 1 title : {0}", Book1.title);
        Console.WriteLine("Book 1 author : {0}", Book1.author);
        Console.WriteLine("Book 1 subject : {0}", Book1.subject);
        Console.WriteLine("Book 1 book_id :{0}", Book1.book_id);
        
        Console.WriteLine("Book 2 title : {0}", Book2.title);
        Console.WriteLine("Book 2 author : {0}", Book2.author);
        Console.WriteLine("Book 2 subject : {0}", Book2.subject);
        Console.WriteLine("Book 2 book_id : {0}", Book2.book_id);
        Console.ReadKey();
    }
}

输出:

Book 1 title : C Programming
Book 1 author : Nuha Ali
Book 1 subject : C Programming Tutorial
Book 1 book_id : 6495407
Book 2 title : Telecom Billing
Book 2 author : Zara Ali
Book 2 subject : Telecom Billing Tutorial
Book 2 book_id : 6495700

C# 结构体特性

类 vs 结构体核心区别

特性类 (class)结构体 (struct)
类型分类引用类型值类型
继承支持支持不支持
默认构造函数可自定义自动生成,不可更改
内存分配堆栈(通常)
null 赋值可赋 null不可赋 null(除非用 Nullable<T>)
拷贝语义引用拷贝值拷贝

进阶示例:带方法的结构体

using System;
struct Books {
    private string title;
    private string author;
    private string subject;
    private int book_id;
    
    public void getValues(string t, string a, string s, int id) {
        title = t; author = a; subject = s; book_id = id;
    }
    
    public void display() {
        Console.WriteLine("Title : {0}", title);
        Console.WriteLine("Author : {0}", author);
        Console.WriteLine("Subject : {0}", subject);
        Console.WriteLine("Book_id :{0}", book_id);
    }
}

public class testStructure {
    public static void Main(string[] args) {
        Books Book1 = new Books();
        Books Book2 = new Books();
        
        Book1.getValues("C Programming", "Nuha Ali", "C Programming Tutorial", 6495407);
        Book2.getValues("Telecom Billing", "Zara Ali", "Telecom Billing Tutorial", 6495700);
        
        Book1.display();
        Book2.display();
        Console.ReadKey();
    }
}

何时使用结构体

避免:大型结构体(>16 字节)频繁传参会导致栈拷贝开销,此时改用类更合适。

C语言

  1. 漫画书的演变与制作:从古代艺术到现代产业
  2. 革新数据存储:带隐形斗篷的次世代磁性纳米结构
  3. 2021程序员必读17本经典编程书单:从代码技艺到架构思维的进阶之路
  4. 3D打印晶格结构赋能零件性能:轻量化、强化与减震
  5. C++结构体与类:嵌入式开发者实战指南
  6. Nucleus RTOS信号量:实用服务与数据结构
  7. 书评:《数字化或死亡——IoT驱动转型蓝图》
  8. 颠覆性技术时代如何留住人性
  9. C 语言结构体详解:高效组织复杂数据
  10. C 语言 Typedef 详解:自定义类型名简化代码
  11. C++数据结构实战:结构体struct定义、访问、函数参数、指针与typedef别名
  12. Java 经典数据结构:Vector、Stack、Hashtable 等遗留类详解