精华内容
下载资源
问答
  • c# 结构体定义中有数组
    2021-08-23 08:49:57
    
    [StructLayout(LayoutKind.Explicit,Pack=1,CharSet=CharSet.Unicode,Size=64+2)]
            public unsafe struct Repository
            {
                /// <summary>
                /// 仓库名称
                /// </summary>
                [FieldOffset(0)]
                [MarshalAs(UnmanagedType.LPWStr, SizeConst = 64)]
                public fixed byte Name[32];  //加上fixed就可以使用c语言语法的数组
     
                /// <summary>
                /// 指针
                /// </summary>
                [FieldOffset(64)]
                public ushort location;
     
    
    

    第二种定义方法

    public unsafe struct MemoryInfo
        {
    	   public UInt32 ModuleSize;
    	   public UInt32 EntryPoint;
    	   public UInt64 VirtualAddress;
    	   public bool Readable;
    	   public bool Writeable;
    	   public bool Executeable;
    	   public bool Guardable;
    	  //如果使用char 占用字节会翻倍  使用bute就是真实大小
    	   public fixed byte ModulePath[260];
        };
    

    获取结构体大小

    System.Runtime.InteropServices.Marshal.SizeOf(typeof(MemoryInfo))
    
    更多相关内容
  • 背景:用C#的人都知道结构体C#中是值类型的,由于这个原因出现了一个有趣的问题,那就是结构体集合通过数字索引修改对应属性的值能不能影响到集合中的结构体呢?答案很多人可能会说不能,因为结构体是值类型的那是...
  • C# 结构体

    2020-12-25 10:10:20
    C# 结构体C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。 定义结构体# struct Books { public string title; public string author; ...

    C# 结构体
    在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。

    定义结构体#

    struct Books
    {
       public string title;
       public string author;
       public string subject;
       public int book_id;
    };  
    结构的用法#
    Copy
    public class testStructure
    {
       public static void Main(string[] args)
       {
    
          Books Book1;        /* 声明 Book1,类型为 Book */
          Books Book2;        /* 声明 Book2,类型为 Book */
    
          /* book 1 详述 */
          Book1.title = "C Programming";
          Book1.author = "Nuha Ali";
          Book1.subject = "C Programming Tutorial";
          Book1.book_id = 6495407;
    
          /* book 2 详述 */
          Book2.title = "Telecom Billing";
          Book2.author = "Zara Ali";
          Book2.subject =  "Telecom Billing Tutorial";
          Book2.book_id = 6495700;
    
          /* 打印 Book1 信息 */
          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);
    
          /* 打印 Book2 信息 */
          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();
    
       }
    }
    

    类 vs 结构#
    类和结构有以下几个基本的不同点:

    类是引用类型,结构是值类型。
    结构不支持继承。
    结构不能声明默认的构造函数。
    C# 结构的特点#
    您已经用了一个简单的名为 Books 的结构。在 C# 中的结构与传统的 C 或 C++ 中的结构不同。C# 中的结构有以下特点:

    结构可带有方法、字段、索引、属性、运算符方法和事件。
    结构可定义构造函数,但不能定义析构vb.net教程函数。但是,您不能为结构定义无参构造函数。无参构造函数(默认)是自动定义的,且不能被改变。
    与类不同,结构不能继承其他的结构或类。
    结构不能作为其他结构或类的基础结构。
    结构可实现一个或多个接口。
    结构成员不能指定为 abstract、virtual 或 protected。
    当您使用 New 操作符创建一个结构对象c#教程时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New 操作符即可被实例化。
    如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。
    作者: 少年。

    出处:https://www.cnblogs.com/ouyangkai/p/12765115.html

    展开全文
  • 浅析C# 结构体struct

    2020-09-07 19:01:37
    主要介绍了C# 结构体struct 的相关资料,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下
  • C#结构体指针的定义及使用详解
  • 使用托管方式定义C#结构体,结构体数组嵌套结构体数组如下: [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequentiali)] public struct test_info_t { ...
  • 详解C# 结构体

    2020-12-17 05:01:18
    C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体结构体是用来代表一个记录。假设您想跟踪图书馆中书的动态。您可能想跟踪每本书的以下属性:...
  • C#实现结构体与数组间的转换,包括:同时支持大小端;支持自定义数据类型;支持数组类型结构体成员,带单元测试
  • C# 结构体(Struct)

    2021-01-03 03:55:28
    C# 结构体(Struct) 在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体结构体是用来代表一个记录。假设您想跟踪图书馆中书的动态。您可能想...
  • c# 结构体

    2021-04-23 08:58:13
    } } } 结构体不能是父类,即不能被继承 结构体不能有显式的无参构造器 结构体可以有显式的有参构造器 using System; namespace ConsoleApp4 { class Program { static void Main(string[] args) { // 引用类型复制的...
    using System;
    
    namespace ConsoleApp4
    {
        class Program
        {
            static void Main(string[] args)
            {
                // student 分配在 栈上
                Student student = new Student() {ID = 101, Name = "ll"};
                // 装箱
                object obj = student;
                //拆箱
                Student s2 = (Student) obj;
                Console.WriteLine($"#{s2.ID}"); // #101
    
                Console.WriteLine("===============");
                // 引用类型复制的是地址
                // 值类型复制的是值
                Student stu1 = new Student() {ID = 101, Name = "ll"};
                Student stu2 = stu1;
                stu2.ID = 1001;
                stu2.Name = "zs";
                // ID:101,Name:ll
                Console.WriteLine($"ID:{stu1.ID},Name:{stu1.Name}");
                //ID:1001,Name:zs
                Console.WriteLine($"ID:{stu2.ID},Name:{stu2.Name}");
            }
        }
    
        /// <summary>
        /// 结构体类型是值类型
        /// </summary>
        struct Student
        {
            public int ID { get; set; }
            public string Name { get; set; }
        }
    }
    

    结构体可以实现接口

    using System;
    
    namespace ConsoleApp4
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 引用类型复制的是地址
                // 值类型复制的是值
                Student stu1 = new Student() {ID = 101, Name = "ll"};
                Student stu2 = stu1;
                stu2.ID = 1001;
                stu2.Name = "zs";
                // I'm #101, Name:ll
                stu1.Sepak();
            }
        }
    
        interface ISpeak
        {
            void Sepak();
        }
    
        /// <summary>
        /// 结构体类型是值类型
        /// </summary>
        struct Student : ISpeak
        {
            public int ID { get; set; }
            public string Name { get; set; }
    
            public void Sepak()
            {
                Console.WriteLine($"I'm #{this.ID}, Name:{this.Name}");
            }
        }
    }
    

    结构体不能是父类,即不能被继承

    在这里插入图片描述

    结构体不能有显式的无参构造器

    在这里插入图片描述

    结构体可以有显式的有参构造器

    using System;
    
    namespace ConsoleApp4
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 引用类型复制的是地址
                // 值类型复制的是值
                Student stu1 = new Student(111, "lll") {ID = 222, Name = "sss"};
                //#ID:222, Name:sss
                Console.WriteLine($"#ID:{stu1.ID}, Name:{stu1.Name}");
            }
        }
    
        interface ISpeak
        {
            void Sepak();
        }
    
        /// <summary>
        /// 结构体类型是值类型,不是引用类型
        /// </summary>
        struct Student : ISpeak
        {
            public Student(int id, string name)
            {
                this.ID = id;
                this.Name = name;
            }
    
            public int ID { get; set; }
            public string Name { get; set; }
    
            public void Sepak()
            {
                Console.WriteLine($"I'm #{this.ID}, Name:{this.Name}");
            }
        }
    }
    
    展开全文
  • 在写C#TCP通信程序时,发送数据时,只能发送byte数组,处理起来比较麻烦不说,如果是和VC6.0等写的程序通信的话,很多的都是传送结构体,在VC6.0中可以很方便的把一个char[]数组转换为一个结构体,而在C#却不能直接把byte...
  • 结构体的创建和使用

    前言

    C#是基于CC++的编程语言,C#同样含有结构体
    通过使用结构体,可以减少变量的声明,让变量的存储更加规范

    相关介绍

    C# 结构体(Struct)-菜鸟教程

    C#中的结构体与类的区别

    微软官方C#函数文档

    一、创建

    • 创建结构体的格式如下,C#C的不同是C#需要使用public修饰里面的变量
      如果没有使用public关键字时,变量就只能在结构体里面使用了。
    • 结构体也可以使用public关键字进行修饰,不过不是必要的
    struct 结构体名
    {
    	public 类型1 变量名2;
    	public 类型2 变量名2;
    	...................
    }
    

    结构体可以创建在namespace命名空间下

    using System;
    
    namespace Test
    {
        struct Student//结构体
        {
            public int score;
            public string name;
        }
        class Program
        {
            
            static void Main(string[] args)
            {
                
            }
        }
    }
    

    结构体也可以创建在class类中,就是不能在方法中创建

    using System;
    
    namespace Test
    {
    
        class Program
        {
            struct Student//结构体
            {
                public int score;
                public string name;
            }
            static void Main(string[] args)
            {
    
            }
        }
    }
    

    二、使用

    • 结构体和类的使用差不多,都是先实例化一个对象,然后使用对象名.变量名来访问其中的变量
    • 结构体中不能初始化变量的值,而类中可以初始化变量值

    在这里插入图片描述

    using System;
    
    namespace Test
    {
        struct Student//结构体
        {
            public int score;
            public string name;
        }
        class Program
        {
            
            static void Main(string[] args)
            {
                Student stu1;//实例化
                stu1.score = 20;//赋值
                stu1.name = "李刚";//赋值
    
                Student stu2;//实例化
                stu2.score = 30;//赋值
                stu2.name = "老贝";//赋值
    
                Console.WriteLine("{0}分数: {1}",stu1.name, stu1.score);//输出
                Console.WriteLine("{0}分数:{1}", stu2.name, stu2.score);//输出
                Console.ReadKey();
            }
        }
    }
    
    展开全文
  • 20 字节对齐_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com这位大神的视频超级棒,看完绝对就会了,顺便可以用下面另一位高手的试题测试一下结构体 字节对齐的练习​www.jianshu.com我来自己总结一下:(也...
  • C# 结构体列表的使用

    2022-04-22 10:35:57
    目录 引言1、结构体定义2、结构体列表初始化3、结构体列表赋值4、结构体列表遍历5、结构体列表删除6、结构体列表全清除 引言   我们在使用大量相同的结构体的时候,就可以使用结构体列表来实现是十分不错的选择,...
  • C#结构体数组

    千次阅读 2020-06-11 09:36:25
    1.结构体类型的数组 当有多个同一结构体类型的结构体实例时,可以将它们组织 成一个结构体数组。结构体数组的元素类型为结构体类型,一 维结构体数组的定义语法如下: 结构体类型名[] 结构体数组名=new 结构体...
  • C#结构体比较

    2020-01-14 20:24:48
    C#结构体是值类型,方法中传参时是值的拷贝; 结构体定义: enum PointPosition { TopLeft, TopMiddle, TopRight } struct EdgePoint { public int left{get;set;} public int top{get;set;} public ...
  • C#结构体类型

    2020-06-09 13:21:48
    C#提供了结构体类型来 保证数据的描述尽量与实际应用相一致。 (或称为结构)是用户自定义类型的一种, 它为用户将实际应用中数据类型不同,但互相联系的数据看作 一个整体提供了类型支持。 C#结构体允许将不同...
  • 本文实例讲述了C#结构体特性。分享给大家供大家参考。具体如下: 结构体的定义: 结构体也可以象类一样可以单独定义. class a{}; struct a{}; 结构体也可以在名字前面加入控制访问符. public struct student{}; ...
  • 快速了解c# 结构体

    2020-12-17 05:17:42
    C# 结构体C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。 定义结构体 struct Books { public string title; public string author; ...
  • C#结构体与方法

    2020-06-11 09:44:20
    1.结构体成员作为方法参数 结构体的成员可以直接作为方法的参数使用,其用法与变量 相同。 static double distance(int a, int b); struct POINT//结构体类型定义 { public int x; public int y; } ...
  • C#结构体与类的区别

    2022-01-29 16:16:14
    结构体与类有很多相似之处,也是某些题目中容易出现的陷阱,下面根据网上的各种资料总结下它们之间的区别。 结构体中的变量是不能赋初始值的,类的变量成员可以。 主动定义结构体的构造函数不能是无参数的,且...
  • 一、如何估算结构体的大小结构是值类型,它的结构体的实例是存放在栈中或者堆中。结构体在内存中所占的大小,就是其字段所占的大小,但是,它的大小并不是所有字段大小相加,而是存在一个对齐的规则,在默认的对齐...
  • 先说结论:sizeof求得的结构体的大小并不一定等于各个数据成员的大小之和。struct 比如有如上两个结构体:A和B。都含有两个int型,一个double型数据成员,但成员的顺序不一样。如上图所示,int 和 double 分别为4个...
  • C# 结构体与类区别

    2020-07-28 14:56:38
    结构体的特点: 1.结构体可以有方法,字段,索引器,属性,操作符方法和事件 2.结构体可以有定义的构造函数,但不能是析构函数。但是不能为结构定义默认构造函数。默认构造函数是自动定义的,不能被更改 3.与类...
  • c# 结构体的运用

    2020-04-28 16:40:18
    } public static byte[] StructToBytes(object structObj) { //得到结构体的大小 int size = Marshal.SizeOf(structObj); //创建byte数组 byte[] bytes = new byte[size]; //分配结构体大小的内存空间 IntPtr ...
  • C#基础--struct(结构体) 结构体和类有点类似 我们定义一个类的时候 是class 类名 定义结构体的时候是 struct 结构体结构体的写法 struct Point { // public int ... C语言中结构体对齐问题 C语言中结构体对齐...
  • C# 结构体的定义和基本使用

    千次阅读 2019-10-14 12:41:16
    //当使用结构体声明变量时,相当于使用结构体中的所有变量去声明 gopositon1 . x = 3 ; //可以使用属性名去访问结构体的中所有变量 GameObjectPositon gopositon2 ; 这样只需要两行就对我们两个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,907
精华内容 11,962
关键字:

c#结构体

c# 订阅
友情链接: 电子秤.zip