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.
operator baru - Operator
Operator new membuat instans jenis baru. Anda juga dapat menggunakan kata kunci new sebagai pengubah deklarasi anggota atau batasan tipe generik.
Referensi bahasa C# mendokumentasikan versi bahasa C# yang paling baru dirilis. Ini juga berisi dokumentasi awal untuk fitur dalam pratinjau publik untuk rilis bahasa yang akan datang.
Dokumentasi mengidentifikasi fitur apa pun yang pertama kali diperkenalkan dalam tiga versi terakhir bahasa atau dalam pratinjau publik saat ini.
Petunjuk / Saran
Untuk menemukan kapan fitur pertama kali diperkenalkan di C#, lihat artikel tentang riwayat versi bahasa C#.
Panggilan konstruktor
Untuk membuat instans baru jenis, panggil salah satu konstruktor jenis tersebut new dengan menggunakan operator:
var dict = new Dictionary<string, int>();
dict["first"] = 10;
dict["second"] = 20;
dict["third"] = 30;
Console.WriteLine(string.Join("; ", dict.Select(entry => $"{entry.Key}: {entry.Value}")));
// Output:
// first: 10; second: 20; third: 30
Anda dapat menggunakan penginisialisasi objek atau koleksi dengan operator new untuk membuat instans dan menginisialisasi objek dalam satu pernyataan, seperti yang ditunjukkan contoh berikut:
var dict = new Dictionary<string, int>
{
["first"] = 10,
["second"] = 20,
["third"] = 30
};
Console.WriteLine(string.Join("; ", dict.Select(entry => $"{entry.Key}: {entry.Value}")));
// Output:
// first: 10; second: 20; third: 30
Berjenis target new
Ekspresi pemanggilan konstruktor dititik target. Artinya, jika tipe target ekspresi diketahui, Anda bisa menghilangkan nama tipe, seperti yang diperlihatkan contoh berikut:
List<int> xs = new();
List<int> ys = new(capacity: 10_000);
List<int> zs = new() { Capacity = 20_000 };
Dictionary<int, List<int>> lookup = new()
{
[1] = new() { 1, 2, 3 },
[2] = new() { 5, 8, 3 },
[5] = new() { 1, 0, 4 }
};
Seperti yang ditunjukkan contoh sebelumnya, selalu gunakan tanda kurung dalam ekspresi berjenis new target.
Jika tipe target ekspresi new tidak diketahui (misalnya, saat Anda menggunakan kata kunci var), Anda harus menentukan nama tipe.
Pembuatan array
Anda juga menggunakan operator new untuk membuat instans array, seperti yang ditunjukkan contoh berikut:
var numbers = new int[3];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
Console.WriteLine(string.Join(", ", numbers));
// Output:
// 10, 20, 30
Gunakan sintaks inisialisasi array untuk membuat instance array dan mengisinya dengan elemen dalam satu pernyataan. Contoh berikut ini menunjukkan berbagai cara bagaimana Anda dapat melakukannya:
var a = new int[3] { 10, 20, 30 };
var b = new int[] { 10, 20, 30 };
var c = new[] { 10, 20, 30 };
Console.WriteLine(c.GetType()); // output: System.Int32[]
Untuk informasi selengkapnya tentang array, lihat Array.
Instansiasi jenis anonim
Untuk membuat instans dari jenis anonim, gunakan sintaks operator new dan penginisialisasi objek:
var example = new { Greeting = "Hello", Name = "World" };
Console.WriteLine($"{example.Greeting}, {example.Name}!");
// Output:
// Hello, World!
Penghancuran jenis instans
Anda tidak perlu menghancurkan instans jenis yang dibuat sebelumnya. Sistem secara otomatis menghancurkan instans jenis referensi dan nilai. Sistem menghancurkan instans jenis nilai segera setelah konteks yang berisinya dihancurkan. Pengumpul sampah menghancurkan instans jenis referensi pada beberapa waktu yang tidak ditentukan setelah referensi terakhir untuk mereka dihapus.
Untuk instans jenis yang berisi sumber daya yang tidak dikelola, seperti handel file, gunakan pembersihan deterministik untuk memastikan bahwa sumber daya dirilis sesegera mungkin. Untuk informasi selengkapnya, lihat System.IDisposable referensi API dan using artikel pernyataan .
Kelebihan beban operator
Jenis yang ditentukan pengguna tidak dapat membebani new operator secara berlebihan.
Spesifikasi bahasa C#
Untuk informasi lebih lanjut, lihatlah bagian Operator sizeof dari Spesifikasi bahasa C#.
Untuk informasi selengkapnya tentang ekspresi berjenis target new, lihat catatan proposal fitur.