Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Тип является неуправляемым типом , если это любой из следующих типов:
-
sbyte,byte,shortushortintuintlongulongnintnuintcharfloatdoubledecimalbool - Любой тип перечисления
- Любой тип указателя
- Кортеж, члены которого являются неуправляемым типом
- Любой определяемый пользователем тип структуры , содержащий только поля неуправляемых типов.
Ограничение можно использовать unmanaged для указания того, что параметр типа является неуправляемым типом, не допускающим значение NULL.
Справочные документы на языке C#, выпущенные последней версией языка C#. Она также содержит начальную документацию по функциям в общедоступных предварительных версиях для предстоящего языкового выпуска.
Документация определяет любую функцию, впервые представленную в последних трех версиях языка или в текущих общедоступных предварительных версиях.
Подсказка
Чтобы узнать, когда функция впервые появилась в C#, ознакомьтесь со статьей по журналу версий языка C#.
Созданный тип структуры, содержащий поля неуправляемых типов, также неуправляемый, как показано в следующем примере:
using System;
public struct Coords<T>
{
public T X;
public T Y;
}
public class UnmanagedTypes
{
public static void Main()
{
DisplaySize<Coords<int>>();
DisplaySize<Coords<double>>();
}
private unsafe static void DisplaySize<T>() 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<T> и представляет примеры неуправляемых созданных типов. Пример управляемого типа: Coords<object>. Он управляется, так как он имеет поля типа, управляемого object . Если вы хотите, чтобы все созданные типы были неуправляемы, используйте unmanaged ограничение в определении универсальной структуры:
public struct Coords<T> where T : unmanaged
{
public T X;
public T Y;
}
Спецификация языка C#
Дополнительные сведения см. в разделе типов указателейспецификации языка C#.