Pelatihan
Modul
Keamanan null di C# - Training
Pelajari praktik pengodean untuk membantu mencegah terjadinya NullReferenceException.
Browser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
.NET 6 memberikan bagian akhir dari rencana unifikasi .NET yang dimulai dengan .NET 5. .NET 6 menyatukan SDK, pustaka dasar, dan runtime di seluruh aplikasi seluler, desktop, IoT, dan cloud. Selain penyatuan ini, ekosistem .NET 6 menawarkan:
Pengembangan yang disederhanakan: Memulai itu mudah. Fitur bahasa baru di C# 10 mengurangi jumlah kode yang perlu Anda tulis. Dan investasi dalam tumpukan web dan API minimal memudahkan untuk dengan cepat menulis layanan mikro yang lebih kecil dan lebih cepat.
Performa yang lebih baik: .NET 6 adalah kerangka kerja web tumpukan penuh tercepat, yang menurunkan biaya komputasi jika Anda menjalankan di cloud.
Produktivitas utama: .NET 6 dan Visual Studio 2022 menyediakan isi ulang panas, alat git baru, pengeditan kode cerdas, alat diagnostik dan pengujian yang kuat, dan kolaborasi tim yang lebih baik.
.NET 6 akan didukung selama tiga tahun sebagai rilis dukungan jangka panjang (LTS).
Fitur pratinjau dinonaktifkan secara default. Mereka juga tidak didukung untuk digunakan dalam produksi dan dapat dihapus dalam versi mendatang. Yang baru RequiresPreviewFeaturesAttribute digunakan untuk membuat anotasi API pratinjau, dan penganalisis terkait memberi tahu Anda jika Anda menggunakan API pratinjau ini.
.NET 6 didukung oleh Visual Studio 2022 dan Visual Studio 2022 untuk Mac (dan versi yang lebih baru).
Artikel ini tidak mencakup semua fitur baru .NET 6. Untuk melihat semua fitur baru, dan untuk informasi lebih lanjut tentang fitur yang tercantum dalam artikel ini, lihat posting blog Mengumumkan .NET 6 .
.NET 6 mencakup banyak peningkatan performa. Bagian ini mencantumkan beberapa peningkatan—di FileStream, pengoptimalan yang dipandu profil, dan kompilasi AOT. Untuk informasi terperinci, lihat Peningkatan performa di posting blog .NET 6 .
Jenis System.IO.FileStream telah ditulis ulang untuk .NET 6 untuk memberikan performa dan keandalan yang lebih baik pada Windows. Sekarang, FileStream jangan pernah memblokir ketika dibuat untuk I/O asinkron di Windows. Untuk informasi selengkapnya, lihat peningkatan IO File di posting blog .NET 6 .
Pengoptimalan yang dipandu profil (PGO) adalah tempat pengompilasi JIT menghasilkan kode yang dioptimalkan dalam hal jenis dan jalur kode yang paling sering digunakan. .NET 6 memperkenalkan PGO dinamis . PGO dinamis bekerja bersama dengan kompilasi berjenjang untuk lebih mengoptimalkan kode berdasarkan instrumentasi tambahan yang diberlakukan selama tingkat 0. PGO dinamis dinonaktifkan secara default, tetapi Anda dapat mengaktifkannya dengan DOTNET_TieredPGO
variabel lingkungan. Untuk informasi selengkapnya, lihat Peningkatan performa JIT.
.NET 6 memperkenalkan Crossgen2, penerus Crossgen, yang telah dihapus. Crossgen dan Crossgen2 adalah alat yang menyediakan kompilasi ahead-of-time (AOT) untuk meningkatkan waktu mulai aplikasi. Crossgen2 ditulis dalam C# alih-alih C++, dan dapat melakukan analisis dan pengoptimalan yang tidak dimungkinkan dengan versi sebelumnya. Untuk informasi selengkapnya, lihat Percakapan tentang Crossgen2.
Rilis .NET 6 mencakup dukungan untuk sistem operasi macOS Arm64 (atau "Apple Silicon") dan Windows Arm64, untuk eksekusi Arm64 asli dan emulasi x64. Selain itu, alat penginstal x64 dan Arm64 .NET sekarang diinstal berdampingan. Untuk informasi selengkapnya, lihat Dukungan .NET untuk macOS 11 dan Windows 11 untuk Arm64 dan x64.
Hot reload adalah fitur yang memungkinkan Anda memodifikasi kode sumber aplikasi dan langsung menerapkan perubahan tersebut ke aplikasi yang sedang berjalan. Tujuan fitur ini adalah untuk meningkatkan produktivitas Anda dengan menghindari menghidupkan ulang aplikasi di antara pengeditan. Hot reload tersedia di Visual Studio 2022 dan dotnet watch
alat baris perintah. Hot reload berfungsi dengan sebagian besar jenis aplikasi .NET, dan untuk kode sumber C#, Visual Basic, dan C++. Untuk informasi selengkapnya, lihat posting blog Hot reload.
.NET Multi-platform App UI (.NET MAUI) masih dalam pratinjau, dengan kandidat rilis datang pada kuartal pertama 2022 dan ketersediaan umum (GA) pada kuartal kedua 2022. .NET MAUI memungkinkan untuk membangun aplikasi klien asli untuk sistem operasi desktop dan seluler dengan basis kode tunggal. Untuk informasi selengkapnya, lihat posting blog Pembaruan pada .NET Multi-platform App UI .
C# 10 mencakup inovasi seperti global using
arahan, deklarasi namespace cakupan file, dan struktur rekaman. Untuk informasi selengkapnya, lihat Apa yang baru di C# 10.
Dalam konser dengan pekerjaan itu, templat proyek .NET SDK untuk C# telah dimodernisasi untuk menggunakan beberapa fitur bahasa baru:
async Main
global using
Dengan menambahkan fitur bahasa baru ini ke templat proyek, kode baru dimulai dengan fitur yang diaktifkan. Namun, kode yang ada tidak terpengaruh saat Anda meningkatkan ke .NET 6. Untuk informasi selengkapnya tentang perubahan templat ini, lihat posting blog templat proyek .NET SDK: C#.
F# 6 menambahkan beberapa perbaikan pada bahasa F# dan F# Interactive. Untuk informasi selengkapnya, lihat Apa yang baru di F# 6.
Visual Basic memiliki peningkatan dalam pengalaman Visual Studio dan startup proyek Formulir Windows.
Untuk menjaga ukuran .NET SDK lebih kecil, beberapa komponen telah ditempatkan dalam beban kerja SDK opsional baru. Komponen-komponen ini termasuk .NET MAUI dan Blazor WebAssembly AOT. Jika Anda menggunakan Visual Studio, itu akan mengurus penginstalan beban kerja SDK apa pun yang Anda butuhkan. Jika Anda menggunakan .NET CLI, Anda dapat mengelola beban kerja menggunakan perintah baru dotnet workload
:
Perintah | Deskripsi |
---|---|
dotnet workload search | Mencari beban kerja yang tersedia. |
dotnet workload install | Menginstal beban kerja tertentu. |
dotnet workload uninstall | Menghapus beban kerja tertentu. |
dotnet workload update | Pembaruan beban kerja yang diinstal. |
dotnet workload repair | Instal ulang semua beban kerja yang diinstal untuk memperbaiki penginstalan yang rusak. |
dotnet workload list | Mencantumkan beban kerja yang terinstal. |
Untuk informasi selengkapnya, lihat Beban kerja SDK opsional.
Banyak peningkatan telah dilakukan di System.Text.Json .NET 6, sehingga sekarang menjadi solusi serialisasi "kekuatan industri".
.NET 6 menambahkan generator sumber baru untuk System.Text.Json. Pembuatan sumber berfungsi dengan dan dapat dikonfigurasi dengan JsonSerializer berbagai cara. Ini dapat meningkatkan performa, mengurangi penggunaan memori, dan memfasilitasi pemangkasan perakitan. Untuk informasi selengkapnya, lihat Cara memilih refleksi atau pembuatan sumber di System.Text.Json dan Cara menggunakan pembuatan sumber di System.Text.Json.
Model objek dokumen baru yang dapat ditulis (DOM) telah ditambahkan, yang melengkapi DOM baca-saja yang sudah ada sebelumnya. API baru menyediakan alternatif serialisasi ringan untuk kasus saat penggunaan jenis objek CLR lama biasa (POCO) tidak dimungkinkan. Ini juga memungkinkan Anda untuk menavigasi secara efisien ke subbagian pohon JSON besar dan membaca array atau mendeserialisasi POCO dari subbagian tersebut. Jenis baru berikut telah ditambahkan untuk mendukung DOM yang dapat ditulis:
Untuk informasi selengkapnya, lihat Pilihan JSON DOM.
System.Text.Json sekarang mendukung serialisasi dan deserialisasi dengan IAsyncEnumerable<T> instans. Metode serialisasi asinkron menghitung instans apa pun IAsyncEnumerable<T> dalam grafik objek lalu menserialisasikannya sebagai array JSON. Untuk deserialisasi, metode JsonSerializer.DeserializeAsyncEnumerable<TValue>(Stream, JsonSerializerOptions, CancellationToken) baru ditambahkan. Untuk informasi selengkapnya, lihat Serialisasi IAsyncEnumerable.
Antarmuka serialisasi baru untuk validasi dan nilai default:
Untuk informasi selengkapnya, lihat Panggilan balik.
Atribut pemesanan properti baru:
Untuk informasi selengkapnya, lihat Mengonfigurasi urutan properti berseri.
Metode baru untuk menulis JSON "mentah":
Untuk informasi selengkapnya, lihat Menulis JSON Mentah.
Serialisasi dan deserialisasi sinkron ke aliran:
Opsi baru untuk mengabaikan objek saat siklus referensi terdeteksi selama serialisasi:
Untuk informasi lebih lanjut, lihat Abaikan referensi melingkar.
Untuk informasi selengkapnya tentang serialisasi dan deserialisasi dengan System.Text.Json
, lihat serialisasi dan deserialisasi JSON di .NET.
.NET 6 menyertakan dukungan pratinjau untuk HTTP/3, versi baru HTTP. HTTP/3 memecahkan beberapa tantangan fungsi dan performa yang ada dengan menggunakan protokol koneksi baru yang mendasar yang disebut QUIC. QUIC membangun koneksi lebih cepat, dan koneksi tidak bergantung pada alamat IP, memungkinkan klien seluler untuk menjelajah antara jaringan Wi-fi dan seluler. Untuk informasi selengkapnya, lihat Menggunakan HTTP/3 dengan HttpClient.
ASP.NET Core mencakup peningkatan api minimal, kompilasi ahead-of-time (AOT) untuk aplikasi Blazor WebAssembly, dan aplikasi satu halaman. Selain itu, komponen Blazor sekarang dapat dirender dari JavaScript dan terintegrasi dengan aplikasi berbasis JavaScript yang ada. Untuk informasi selengkapnya, lihat Apa yang baru di ASP.NET Core 6.
.NET 6 menghadirkan dukungan yang ditingkatkan untuk OpenTelemetry, yang merupakan kumpulan alat, API, dan SDK yang membantu Anda menganalisis performa dan perilaku perangkat lunak Anda. API di System.Diagnostics.Metrics namespace mengimplementasikan spesifikasi API Metrik OpenTelemetry. Misalnya, ada empat kelas instrumen untuk mendukung skenario metrik yang berbeda. Kelas instrumennya adalah:
.NET 6 menambahkan dukungan pratinjau untuk dua mitigasi keamanan utama: Control-flow Enforcement Technology (CET) dan "write exclusive execute" (W^X).
CET adalah teknologi Intel yang tersedia dalam beberapa prosesor Intel dan AMD yang lebih baru. Ini menambahkan kemampuan ke perangkat keras yang melindungi dari beberapa serangan pembajakan aliran kontrol. .NET 6 menyediakan dukungan untuk CET untuk aplikasi Windows x64, dan Anda harus mengaktifkannya secara eksplisit. Untuk informasi selengkapnya, lihat kompatibilitas .NET 6 dengan tumpukan bayangan Intel CET.
W^X tersedia semua sistem operasi dengan .NET 6 tetapi hanya diaktifkan secara default di Apple Silicon. W^X memblokir jalur serangan paling sederhana dengan melarang halaman memori agar dapat ditulis dan dapat dieksekusi secara bersamaan.
Pemangkasan penyebaran mandiri ditingkatkan. Di .NET 5, hanya rakitan yang tidak digunakan yang dipangkas. .NET 6 menambahkan pemangkasan jenis dan anggota yang tidak digunakan juga. Selain itu, memangkas peringatan, yang memperingatkan Anda ke tempat-tempat di mana pemangkasan dapat menghapus kode yang digunakan pada waktu proses, sekarang diaktifkan secara default. Untuk informasi selengkapnya, lihat Memangkas penyebaran mandiri dan executable.
.NET 6 SDK mencakup beberapa penganalisis kode baru yang menyangkut kompatibilitas API, kompatibilitas platform, keamanan pemangkasan, penggunaan rentang dalam perangkaian string dan pemisahan, API string yang lebih cepat, dan API pengumpulan yang lebih cepat. Untuk daftar lengkap penganalisis baru (dan dihapus), lihat Rilis Analyzer - .NET 6.
Penganalisis Is<Platform>
kompatibilitas Platform mengenali metode di OperatingSystem kelas, misalnya, OperatingSystem.IsWindows(), sebagai penjaga platform. Untuk memungkinkan penjaga platform kustom, .NET 6 memperkenalkan dua atribut baru yang dapat Anda gunakan untuk membuat anotasi bidang, properti, atau metode dengan nama platform yang didukung atau tidak didukung:
Application.SetDefaultFont(Font) adalah metode baru di .NET 6 yang mengatur font default di seluruh aplikasi Anda.
Templat untuk aplikasi C# Formulir Windows telah diperbarui untuk mendukung global using
direktif, namespace cakupan file, dan jenis referensi nullable. Selain itu, mereka menyertakan kode bootstrap aplikasi, yang mengurangi kode boilerplate dan memungkinkan perancang Formulir Windows untuk merender permukaan desain dalam font pilihan. Kode bootstrap adalah panggilan ke ApplicationConfiguration.Initialize()
, yang merupakan metode yang dihasilkan sumber yang memancarkan panggilan ke metode konfigurasi lain, seperti Application.EnableVisualStyles(). Selain itu, jika Anda mengatur font non-default melalui properti ApplicationDefaultFont MSBuild, ApplicationConfiguration.Initialize()
memancarkan panggilan ke SetDefaultFont(Font).
Untuk informasi selengkapnya, lihat posting blog Apa yang baru dalam Formulir Windows.
Tarball sumber, yang berisi semua sumber untuk .NET SDK, sekarang menjadi produk dari build .NET SDK. Organisasi lain, seperti Red Hat, dapat membangun versi SDK mereka sendiri menggunakan tarball sumber ini.
Moniker kerangka kerja target (TFM) khusus OS tambahan telah ditambahkan untuk .NET 6, misalnya, , net6.0-android
net6.0-ios
, dan net6.0-macos
. Untuk informasi selengkapnya, lihat TFM khusus OS .NET 5+.
Dalam pratinjau adalah kemampuan untuk menggunakan operator pada jenis generik di .NET 6. .NET 6 memperkenalkan banyak antarmuka yang menggunakan fitur pratinjau baru C# 10, static abstract
anggota antarmuka. Antarmuka ini sesuai dengan operator yang berbeda, misalnya, IAdditionOperators
mewakili +
operator. Antarmuka tersedia dalam paket System.Runtime.Experimental NuGet. Untuk informasi selengkapnya, lihat posting blog Matematika generik.
Jika Anda adalah pengembang pustaka NuGet, alat validasi paket baru memungkinkan Anda memvalidasi bahwa paket Anda konsisten dan terbentuk dengan baik. Anda dapat menentukan apakah:
Untuk informasi selengkapnya, lihat posting blog Validasi Paket.
.NET 6 memperkenalkan API baru berikut yang memeriksa kode dan memberikan informasi nullability:
API ini berguna untuk alat dan serializer berbasis refleksi.
Beberapa namespace ekstensi memiliki peningkatan di .NET 6, seperti yang ditunjukkan tabel berikut.
Ruang nama | Penyempurnaan |
---|---|
Microsoft.Extensions.DependencyInjection | CreateAsyncScope memungkinkan Anda menggunakan using pernyataan dengan aman untuk penyedia layanan yang mendaftarkan IAsyncDisposable layanan. |
Microsoft.Extensions.Hosting | Metode baru ConfigureHostOptions menyederhanakan penyiapan aplikasi. |
Microsoft.Extensions.Logging | Microsoft.Extensions.Logging memiliki generator sumber baru untuk API pengelogan berkinerja. Generator sumber dipicu jika Anda menambahkan yang baru LoggerMessageAttribute ke partial metode pengelogan. Pada waktu kompilasi, generator menghasilkan implementasi partial metode , yang biasanya lebih cepat pada waktu proses daripada solusi pengelogan yang ada. Untuk informasi selengkapnya, lihat Pembuatan sumber pengelogan waktu kompilasi. |
Banyak metode LINQ telah ditambahkan di .NET 6. Sebagian besar metode baru yang tercantum dalam tabel berikut memiliki metode yang setara dalam jenis.System.Linq.Queryable
Dua struktur berikut ditambahkan di .NET 6: System.DateOnly dan System.TimeOnly. Ini mewakili bagian tanggal dan bagian waktu dari DateTime, masing-masing. DateOnly berguna untuk ulang tahun dan hari jadi, dan TimeOnly berguna untuk alarm harian dan jam kerja mingguan.
Anda sekarang dapat menggunakan ID zona waktu Internet Assigned Numbers Authority (IANA) atau Windows pada sistem operasi apa pun yang memiliki data zona waktu yang terinstal. Metode TimeZoneInfo.FindSystemTimeZoneById(String) ini telah diperbarui untuk secara otomatis mengonversi inputnya dari zona waktu Windows ke zona waktu IANA (atau sebaliknya) jika zona waktu yang diminta tidak ditemukan pada sistem. Selain itu, metode TryConvertIanaIdToWindowsId(String, String) baru dan TryConvertWindowsIdToIanaId telah ditambahkan untuk skenario ketika Anda masih perlu mengonversi secara manual dari satu format zona waktu ke format zona waktu lainnya.
Ada beberapa peningkatan zona waktu lainnya juga. Untuk informasi selengkapnya, lihat Penyempurnaan Tanggal, Waktu, dan Zona Waktu di .NET 6.
Kelas baru PriorityQueue<TElement,TPriority> mewakili kumpulan item yang memiliki nilai dan prioritas. Item di-dequeued dalam meningkatkan urutan prioritas—yaitu, item dengan nilai prioritas terendah dihapus antreannya terlebih dahulu. Kelas ini menerapkan struktur data tumpukan min.
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
Pelatihan
Modul
Keamanan null di C# - Training
Pelajari praktik pengodean untuk membantu mencegah terjadinya NullReferenceException.