类型是 非托管类型 (如果类型为以下任一类型):
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
{
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
public struct Coords
{
public T X;
public T Y;
}
C# 语言规范
有关详细信息,请参阅 C# 语言规范的指针类型部分。
另请参阅
指针类型
内存和跨度相关类型
sizeof 运算符
stackalloc