ToB企服应用市场:ToB评测及商务社交产业平台

标题: C#.Net筑基-类型体系②常见类型 [打印本页]

作者: 来自云龙湖轮廓分明的月亮    时间: 2024-5-23 07:52
标题: C#.Net筑基-类型体系②常见类型

01、结构体类型Struct

结构体 struct 是一种用户自界说的值类型,常用于界说一些简朴(轻量)的数据结构。对于一些局部使用的数据结构,优先使用结构体,服从要高很多。
⁉️结构体始终都是分配在栈上吗?—— 不一定,当结构体是类的成员时,则会随对象一起分配在堆上。同时当结构体上有引用类型字段时,该字段只存储引用对象的地点,引用对象还是分配在堆上。
  1. void Main()
  2. {
  3.         Point p1 = default;
  4.         //Point p1 = default(Point);
  5.         Point p2 = new Point(1, 2);
  6.         p1.X = 100;
  7.         p2.X = 100;
  8. }
  9. public struct Point
  10. {
  11.         public int X;
  12.         public int Y;
  13.         public Point(int x, int y)
  14.         {
  15.                 X = x;
  16.                 Y = y;
  17.         }
  18. }
复制代码
1.1、只读结构体与只读函数

readonly struct申明一个只读的结构体,其所有字段、属性都必须是只读的。
  1. public readonly struct Point
  2. {
  3.         public readonly int X,Y;
  4. }
复制代码
用在方法上,该方法中不可修改任何字段值。这只能用在结构体中,结构体不能继承,不知道这个特性有什么用?
  1. public struct Point
  2. {
  3.         public int X;
  4.         public int Y;
  5.         public readonly int GetValue()
  6.         {
  7.                 X--;   //Error:不可修改
  8.                 return X + Y;
  9.         }
  10. }
复制代码
1.2、Ref 结构体

ref 结构类型 用ref struct申明,该结构体只能存储在栈上,因此任何会导致其分配到堆上的举动都不支持,如装箱、拆箱,作为类的成员等都不支持。
Ref 结构体 可用于一些高性能场景,System.SpanReadOnlySpan 都是 readonly ref struct结构体。
  1. public ref struct Point
  2. {
  3.         public int X,Y;
  4. }
复制代码
02、枚举Enum

枚举类型 是由基础值类型(byte、int、long等)组成的一组命名常量的值类型,用enum来申明界说。常用于一些有固定值的种别申明,如性别、方向、数据类型等。
  1. public enum UserType : int  //常量类型,可以修改为其他整数类型
  2. {
  3.     [Description("普通会员")]
  4.         Default,
  5.         VIP = 10,
  6.         SupperVIP,  //继续前一个,值为11
  7. }
  8. void Main()
  9. {
  10.         var t1 = UserType.Default;
  11.         Console.WriteLine(t1.ToString()); //输出名称:Default
  12.         Console.WriteLine((int)t1);       //输出值:0
  13.     Console.WriteLine($"{t1:F}");     //输出名称:Default
  14.         Console.WriteLine($"{t1:D}");     //输出值:0
  15.         var t2 = (UserType)0;
  16.         int t3 = (int)UserType.Default;
  17.         Console.WriteLine(t1 == t2); //True
  18. }
复制代码
2.1、Enum 类API

System.Enum 类型是所有枚举类型的抽象基类,提供了一些API方法用于枚举的操作,基本都是静态方法。Enum 类型还可以作为泛型约束使用。
[table][tr]<strong>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4