非托管类型 - C# reference

非托管类型 - C# reference

类型是 非托管类型 (如果类型为以下任一类型):

sbyte、byte、、ushortshort、int、uintdoublelongcharulongnintnuintfloat或 decimalbool

任何 枚举 类型

任何 指针 类型

一个 元组 ,其成员都是非托管类型

任何仅包含非托管类型的字段的用户定义 结构 类型。

可以使用 unmanaged 约束 指定类型参数是非指针、不可为 null 的非托管类型。

包含非托管类型的字段的 构造 结构类型也是非托管的,如以下示例所示:

using System;

public struct Coords

{

public T X;

public T Y;

}

public class UnmanagedTypes

{

public static void Main()

{

DisplaySize>();

DisplaySize>();

}

private unsafe static void DisplaySize() where T : unmanaged

{

Console.WriteLine($"{typeof(T)} is unmanaged and its size is {sizeof(T)} bytes");

}

}

// Output:

// Coords`1[System.Int32] is unmanaged and its size is 8 bytes

// Coords`1[System.Double] is unmanaged and its size is 16 bytes

泛型结构可以是非托管类型和托管构造类型的源。 前面的示例定义泛型结构 Coords ,并演示非托管构造类型的示例。 托管类型的示例为 Coords. 它是托管的,因为它具有类型(托管)的 object 字段。 如果希望 所有 构造类型都是非托管类型,请使用 unmanaged 泛型结构定义中的约束:

public struct Coords where T : unmanaged

{

public T X;

public T Y;

}

C# 语言规范

有关详细信息,请参阅 C# 语言规范的指针类型部分。

另请参阅

指针类型

内存和跨度相关类型

sizeof 运算符

stackalloc

相关推荐

技嘉显卡超频工具AORUS Engine使用教程(附下载)
365服务热线

技嘉显卡超频工具AORUS Engine使用教程(附下载)

📅 08-09 👁️ 6244
photoshop怎么换人脸?
365服务热线

photoshop怎么换人脸?

📅 06-30 👁️ 4475