C#之结构体struct总结

  • struct类型是一种值类型,通常用来封装小型相关变量组
  • struct可以包含的成员:构造函数、常量、字段、方法、属性、所引器、事件和嵌套类型,如果同时需要以上类型,则应当考虑使用类而不是结构体
  • 结构可以继承自类(单继承,不同于C++)和实现接口,单不能继承自了一个结构
  • 结构成员无法声明为 protected(因为结构无法被继承)
  • 结构体在栈上分配内存空间
  • 结构体申明位置:与类平级或位于类内部但不能位于方法体内
  • 不能新申明无参数的构造函数
  • 结构体可以申明静态构造函数,但该函数不能有访问修饰符且该函数无参数
  • 结构体内的非构造函数的静态方法除了访问修饰符必须是 public,其它跟在类中声明方式一样
  • 结构体实例的申明可以不用 new,不同于类等引用类型

  例子:

        struct S
        {
            private int d = 0;

            public int D
            {
                get { return d; }
                set { d = value; }
            }

            public S(int p)
            {
                D = p;
            }

            public static int Sum(int a, int b)
            {
                return a + b;
            }
        }
时间: 2024-08-21 19:14:03

C#之结构体struct总结的相关文章

C语言结构体-struct

知识点: 1)结构体的定义. 2)结构体的sizeof. 3)  结构体的指针. 1) 结构体的定义: 在逻辑上有一定关联的多个数据类型做为一整体进行操作的数据结构,它的关键字是struct.下面我将定义一个结构体 struct Student{ char *name; int age; int sid; }; 我用上面定义的结构体Student来定义一个变量. struct Student student; 上面的代码有点烦,其实我可以这样写 struct Student{ char *nam

C语言 - 结构体(struct)比特字段(:) 详细解释

结构体(struct)比特字段(:) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26722511 结构体(struct)能够使用位字段(:), 节省空间, 例如以下面代码, 结构体a中的, 第一个变量x占用1个字符, y占用2个字符, z占用33个字符(越界); 可是sizeof()会自己主动补齐, 如x+y一共占用4个字节, z占用8个字节, 所以结构体占用12个字节; 当使用加法运算时, 会初始化为0; 代码

关于c#的结构体struct与class的区别

C# 结构体 struct C#中结构类型和类类型在语法上非常相似,他们都是一种数据结构,都可以包括数据成员和方法成员. 结构和类的区别: 1.结构是值类型,它在栈中分配空间:而类是引用类型,它在堆中分配空间,栈中保存的只是引用. 2.结构类型直接存储成员数据,让其他类的数据位于对中,位于栈中的变量保存的是指向堆中数据对象的引用. C#中的简单类型,如int.double.bool等都是结构类型.如果需要的话,甚至可以使用结构类型结合运算符运算重载,再为C#语言创建出一种新的值类型来.

结构体struct sockaddr_in, struct sockaddr,struct in_addr

一.结构体 struct sockaddr_in,  struct sockaddr,  struct in_addr struct sockaddr_in,  struct sockaddr,struct in_addr,这是网络编程中常用的结构体,每次都记不住它们各自的成员是啥,需要临时查,为方便以后的查看,在这里总结下. struct sockaddr {unsigned short sa_family;  /* 地址族, AF_xxx */char sa_data[14];  /* 14

C# 结构体 struct

C# 结构体 struct C#中结构类型和类类型在语法上非常相似,他们都是一种数据结构,都可以包括数据成员和方法成员. 结构和类的区别: 1.结构是值类型,它在栈中分配空间:而类是引用类型,它在堆中分配空间,栈中保存的只是引用. 2.结构类型直接存储成员数据,让其他类的数据位于对中,位于栈中的变量保存的是指向堆中数据对象的引用. C#中的简单类型,如int.double.bool等都是结构类型.如果需要的话,甚至可以使用结构类型结合运算符运算重载,再为C#语言创建出一种新的值类型来. 由于结构

获取网络接口信息——ioctl()函数与结构体struct ifreq、 struct ifconf

转载请注明出处:windeal专栏 Linux 下 可以使用ioctl()函数 以及 结构体 struct ifreq  结构体struct ifconf来获取网络接口的各种信息. ioctl 首先看ioctl()用法 ioctl()原型如下: #include <sys/ioctl.h> int ioctl(int fd, int request, ...); 参数: fd     : 文件描述符 request:  表示要请求的信息.如IP地址.网络掩码等 ...     :  后面的可变

Swift中元组(Tuples),结构体(Struct),枚举(Enums)之间的区别

Swift有许多种存储数据方式,你可以用枚举(enums),元组(tuples),结构体(structs),类(classes),在这篇文章中我们将比较枚举.元组.结构体之间区别,首先从最简单的开始-元组(tuples). 元组(tuple) 元组是多个值组成的复合值类型,例如,你可以定义一个含有整形和字符串的tuple let amout=(100,"EUR") 当你函数需要返回多个值时,元组这个时候非常有用,你可以使用下标方式来访问元组中的值,如.0,.1以此类推,如下: let

APUE学习笔记——4.2结构体 struct stat 及其相关函数介绍

以下不少内容来自man手册 结构体struct stat 结构体struct stat用于保存文件相关的所有信息. struct stat的基本成员如下所示 struct stat { dev_t st_dev; // 文件所在设备的设备id,可以分解为主设备号和此设备号 ino_t st_ino; // inode号 mode_t st_mode; // 文件的类型.存取权限等 nlink_t st_nlink; // 文件硬连接数 uid_t st_uid; // 文件拥有者的用户id gi

修改Dictionary或List中结构体struct值的问题

问题:修改Dictionary中结构体struct值的值,如果直接用Dictionary[key].a += XX;(a为结构体中某数值型属性) ,则会报错: 无法修改.Dictionary<int,struct>.this[int]”的返回值,因为它不是变量 如果用一个变量承接Dictionary[key]中的结构体,即struct newStr =Dictionary[key],然后再做出修改:newStr.a += XX,则Dictionary中对应的结构体的值不发生变化.(由此可判断结

内核中用于数据接收的结构体struct msghdr(转)

内核中用于数据接收的结构体struct msghdr(转) 我们从一个实际的数据包发送的例子入手,来看看其发送的具体流程,以及过程中涉及到的相关数据结构.在我们的虚拟机上发送icmp回显请求包,ping另一台主机172.16.48.1.我们使用系统调用sendto发送这个icmp包. ssize_t sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);