ToB企服应用市场:ToB评测及商务社交产业平台
标题:
C#.Net筑基-类型体系②常见类型
[打印本页]
作者:
来自云龙湖轮廓分明的月亮
时间:
2024-5-23 07:52
标题:
C#.Net筑基-类型体系②常见类型
01、结构体类型Struct
结构体
struct
是一种用户自界说的值类型,常用于界说一些简朴(轻量)的数据结构。对于一些局部使用的数据结构,优先使用结构体,服从要高很多。
可以有构造函数,也可以没有。因此初始化时可以new,也可以用默认default。但当给字段设置了初始值时,则必须有显示的构造函数。
结构体中可以界说字段、属性、方法,不能使用闭幕器。
结构体可继承接口,并实现接口,但不能继承其他类、结构体。
结构体是值类型,被分配在栈上面,因此在参数通报时为值通报。
⁉️结构体始终都是分配在栈上吗?—— 不一定,当结构体是类的成员时,则会随对象一起分配在堆上。同时当结构体上有引用类型字段时,该字段只存储引用对象的地点,引用对象还是分配在堆上。
void Main()
{
Point p1 = default;
//Point p1 = default(Point);
Point p2 = new Point(1, 2);
p1.X = 100;
p2.X = 100;
}
public struct Point
{
public int X;
public int Y;
public Point(int x, int y)
{
X = x;
Y = y;
}
}
复制代码
1.1、只读结构体与只读函数
readonly struct申明一个只读的结构体,其所有字段、属性都必须是只读的。
public readonly struct Point
{
public readonly int X,Y;
}
复制代码
用在方法上,该方法中不可修改任何字段值。
这只能用在结构体中
,结构体不能继承,不知道这个特性有什么用?
public struct Point
{
public int X;
public int Y;
public readonly int GetValue()
{
X--; //Error:不可修改
return X + Y;
}
}
复制代码
1.2、Ref 结构体
ref 结构类型
用ref struct申明,该结构体只能存储在栈上,因此任何会导致其分配到堆上的举动都不支持,如装箱、拆箱,作为类的成员等都不支持。
Ref 结构体 可用于一些高性能场景,
System.Span
、
ReadOnlySpan
都是 readonly ref struct结构体。
public ref struct Point
{
public int X,Y;
}
复制代码
02、枚举Enum
枚举类型
是由基础值类型(byte、int、long等)组成的一组
命名常量
的值类型,用enum来申明界说。常用于一些有固定值的种别申明,如性别、方向、数据类型等。
枚举成员默认是int,可以修改为其他整数类型,如byte、short、uint、long等。
枚举项可设置值,也可省略,大概部分设置值。值默认是从0开始,并按顺序依次递增。
枚举变量的默认值始终是0。
枚举本质上就是命名常量,因此可以与值类型进行相互转换(强制转换)。
特性Description常用来界说枚项在UI上的显示内容,使用反射获取。
public enum UserType : int //常量类型,可以修改为其他整数类型
{
[Description("普通会员")]
Default,
VIP = 10,
SupperVIP, //继续前一个,值为11
}
void Main()
{
var t1 = UserType.Default;
Console.WriteLine(t1.ToString()); //输出名称:Default
Console.WriteLine((int)t1); //输出值:0
Console.WriteLine($"{t1:F}"); //输出名称:Default
Console.WriteLine($"{t1:D}"); //输出值:0
var t2 = (UserType)0;
int t3 = (int)UserType.Default;
Console.WriteLine(t1 == t2); //True
}
复制代码
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