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 yang tidak dikelola jika merupakan salah satu jenis berikut:
-
sbyte, ,byte,shortushort,int,uintlong, ,ulong,nint,nuint,char, ,float,double, ,decimal, ataubool - Jenis enum apa pun
- Jenis penunjuk apa pun
- 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 dikelola dan dikelola. Contoh sebelumnya mendefinisikan struktur Coords<T> generik dan menyajikan contoh jenis konstruksi yang tidak dikelola. Contoh jenis terkelola adalah Coords<object>. Ini dikelola karena memiliki bidang jenis object , yang dikelola. Jika Anda ingin semua jenis yang dibangun menjadi jenis yang tidak dikelola, gunakan unmanaged batasan 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#.