3.2C#值类型之结构(Struct)

1.结构声明

struct 类型定义包含数据成员和函数成员的结构,这一点与类类型相似。

struct 结构名称<类型参数> : 接口 {
    //结构体
}

2.继承

所有结构类型只能隐式派生自 System.ValueType类,结构类型之间不支持用户自定义的继承,因为已密封。

3.创建对象

结构的创建对象与类的创建对象相同。

4.结构与类的区别

类是引用类型。创建类的对象后,向其分配对象的变量仅保留对相应内存的引用。将对象引用分配给新变量后,新变量会引用原始对象。通过一个变量所做的更改将反映到另一个变量中,因为它们引用相同的数据。

结构是值类型。创建结构时,向其分配结构的变量保留结构的实际数据。 将结构分配给新变量时,会复制结构。 因此,新变量和原始变量包含相同数据的副本(共两个)。对一个副本所做的更改不会影响另一个副本。

一般来说,类用于对更复杂的行为建模。类通常存储计划在创建类对象后进行修改的数据。结构最适用于小型数据结构。结构通常存储不打算在创建结构后修改的数据。

5.readonly修饰符

如果 readonly 修饰符用在结构类型的声明中,将限制此结构类型是不可变的,所有字段成员必须为只读,所有属性都必须是只读的,包括自动实现的属性。

如果 readonly 修饰符用在结构类型内的实例成员声明中,将限制此实例成员不能修改结构的状态。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/csharp/csharplang/7873.html

(0)
上一篇 2021年3月2日 17:53
下一篇 2021年3月3日 03:00

相关推荐

  • 3.7C#引用类型之数组(Array)

    数组(Array)是一种数据结构,可以用一个统一的数组名和不同的下标(index,或称索引)来确定数组中唯一的元素。根据数组的维度,可以将其分为一维数组、多维数组和交错数组。 数组中的元素是有序的,通过索引访问。 数组中的元素必须属于同一个类型,而且可以随时替换元素。 数组的长度(元素的个数)不可以动态改变,不可以向数…

    C#语言教程 2021年3月7日
    01310
  • 3.12C#类型之记录结构(record struct)和记录类(record class)

    记录声明 声明记录类型的语法与声明结构或类的语法类似。只需将record struct代替struct,或使用record代替class。 记录的参数是记录的public属性。 记录结构(record struct)是值类型,记录类(record class)是引用类型。 继承 记录结构不支持继承,因为结构不支持继承。…

    C#语言教程 2021年3月12日
    0180
  • 3.13C#语言的可访问性(Accessibility)

    访问修饰符 修饰符 说明 public 访问不受限制。 protected 仅可访问此类或派生自此类的类。 internal 仅可访问当前程序集(.exe 或 .dll)。 protected internal 仅可访问此类、从此类中派生的类,或者同一程序集中的类。 private 仅可访问此类。 …

    C#语言教程 2021年3月13日
    01680

发表评论

登录后才能评论