Bagikan melalui


operator baru - Operator new membuat instans baru jenis

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.

Lihat juga