Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Jenis adalah jenis tidak terkelola jika merupakan salah satu jenis berikut:
sbyte
, ,byte
,ushort
short
,int
,uint
long
, ,ulong
,nint
,nuint
,char
, ,float
,double
, ,decimal
, ataubool
- Semua jenis enum
- Semua jenis penunjuk
- Tuple yang anggotanya adalah semua jenis yang tidak dikelola
- Jenis struct yang ditentukan pengguna yang hanya berisi bidang jenis yang tidak dikelola.
Anda dapat menggunakan unmanaged
batasan untuk menentukan bahwa parameter jenis adalah jenis tidak terkelola non-pointer dan tidak dapat diubah ke null.
Jenis struktur yang dibangun yang berisi bidang jenis yang tidak dikelola saja juga tidak dikelola, seperti yang ditunjukkan contoh berikut:
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
Struktur generik mungkin merupakan sumber dari jenis konstruksi yang tidak terkelola dan terkelola. Contoh sebelumnya mendefinisikan struktur Coords<T>
generik dan menyajikan contoh jenis konstruksi yang tidak terkelola. Contoh dari jenis terkelola adalah Coords<object>
. Ini dikelola karena memiliki bidang jenis object
, yang dikelola. Jika Anda ingin semua jenis yang dibangun menjadi jenis tidak terkelola, gunakan batasan unmanaged
dalam definisi struktur generik:
public struct Coords<T> where T : unmanaged
{
public T X;
public T Y;
}
Spesifikasi bahasa C#
Untuk informasi selengkapnya, lihat bagian Jenis penunjuk dari spesifikasi bahasa C#.