Eğitim
Modül
C'de null güvenlik# - Training
NullReferenceException oluşumunu önlemeye yardımcı olacak kodlama uygulamalarını öğrenin.
Bu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
.NET 6, .NET 5 ile başlayan .NET birleştirme planının son parçalarını sunar. .NET 6, sdk'yı, temel kitaplıkları ve çalışma zamanını mobil, masaüstü, IoT ve bulut uygulamaları arasında bir hale getirir. .NET 6 ekosistemi, bu birleştirmeye ek olarak şunları da sunar:
Basitleştirilmiş geliştirme: Kullanmaya başlamak kolaydır. C# 10'daki yeni dil özellikleri, yazmanız gereken kod miktarını azaltır. Web yığınına ve minimum API'lere yapılan yatırımlar, daha küçük ve daha hızlı mikro hizmetler yazmayı kolaylaştırır.
Daha iyi performans: .NET 6, bulutta çalışıyorsanız işlem maliyetlerini düşüren en hızlı tam yığın web çerçevesidir.
Nihai üretkenlik: .NET 6 ve Visual Studio 2022 , sık erişimli yeniden yükleme, yeni git araçları, akıllı kod düzenleme, güçlü tanılama ve test araçları ve daha iyi ekip işbirliği sağlar.
.NET 6, uzun vadeli destek (LTS) sürümü olarak üç yıl boyunca desteklenecektir.
Önizleme özellikleri varsayılan olarak devre dışı bırakılır. Bunlar ayrıca üretimde kullanılmak üzere desteklenmez ve gelecekteki bir sürümde kaldırılabilir. Yeni RequiresPreviewFeaturesAttribute , önizleme API'lerine açıklama eklemek için kullanılır ve bu önizleme API'lerini kullanıyorsanız ilgili çözümleyici sizi uyarır.
.NET 6, Mac için Visual Studio 2022 ve Visual Studio 2022 (ve sonraki sürümler) tarafından desteklenir.
Bu makale , .NET 6'nın tüm yeni özelliklerini kapsamaz. Tüm yeni özellikleri görmek ve bu makalede listelenen özellikler hakkında daha fazla bilgi için .NET 6 Duyuruları blog gönderisine bakın.
.NET 6, çok sayıda performans geliştirmesi içerir. Bu bölümde FileStream, profil destekli iyileştirme ve AOT derlemesindeki bazı iyileştirmeler listelenir. Ayrıntılı bilgi için .NET 6'daki performans iyileştirmeleri blog gönderisine bakın.
Windows'ta System.IO.FileStream daha iyi performans ve güvenilirlik sağlamak amacıyla .NET 6 için tür yeniden yazıldı. FileStream Artık Windows'ta zaman uyumsuz G/Ç için oluşturulduğunda hiçbir zaman engellemeyin. Daha fazla bilgi için .NET 6'da Dosya GÇ geliştirmeleri blog gönderisine bakın.
Profil destekli iyileştirme (PGO), JIT derleyicisinin en sık kullanılan türler ve kod yolları açısından iyileştirilmiş kod oluşturduğu yerdir. .NET 6, dinamik PGO'yu tanıtır. Dinamik PGO, katman 0 sırasında eklenen ek izlemelere göre kodu daha da iyileştirmek için katmanlı derleme ile el ele çalışır. Dinamik PGO varsayılan olarak devre dışıdır, ancak ortam değişkeniyle DOTNET_TieredPGO
etkinleştirebilirsiniz. Daha fazla bilgi için bkz . JIT performans geliştirmeleri.
.NET 6, kaldırılan Crossgen'in ardılı olan Crossgen2'yi tanıtır. Crossgen ve Crossgen2, bir uygulamanın başlangıç süresini geliştirmek için önceden derleme (AOT) sağlayan araçlardır. Crossgen2, C++ yerine C# dilinde yazılır ve önceki sürümle mümkün olmayan analiz ve iyileştirme gerçekleştirebilir. Daha fazla bilgi için bkz . Crossgen2 hakkında konuşma.
.NET 6 sürümü, hem yerel Arm64 yürütmesi hem de x64 öykünmesi için macOS Arm64 (veya "Apple Silicon") ve Windows Arm64 işletim sistemleri için destek içerir. Ayrıca, x64 ve Arm64 .NET yükleyicileri artık yan yana yüklenir. Daha fazla bilgi için bkz . MacOS 11 ve Arm64 ve x64 için Windows 11 için .NET Desteği.
Sık erişimli yeniden yükleme , uygulamanızın kaynak kodunu değiştirmenize ve bu değişiklikleri çalışan uygulamanıza anında uygulamanıza olanak tanıyan bir özelliktir. Özelliğin amacı, düzenlemeler arasında uygulama yeniden başlatmalarını önleyerek üretkenliğinizi artırmaktır. Sık erişimli yeniden yükleme, Visual Studio 2022'de ve komut satırı aracında dotnet watch
kullanılabilir. Sık erişimli yeniden yükleme, çoğu .NET uygulaması türüyle ve C#, Visual Basic ve C++ kaynak kodu için çalışır. Daha fazla bilgi için Sık erişimli yeniden yükleme blog gönderisine bakın.
.NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI), 2022'nin ilk çeyreğinde yayın adayı ve 2022'nin ikinci çeyreğinde genel kullanılabilirlik (GA) ile önizleme aşamasındadır. .NET MAUI, tek bir kod tabanıyla masaüstü ve mobil işletim sistemleri için yerel istemci uygulamaları oluşturmayı mümkün kılar. Daha fazla bilgi için .NET'te Güncelleştirme Çok Platformlu Uygulama Kullanıcı Arabirimi blog gönderisine bakın.
C# 10 yönergeleri, dosya kapsamlı ad alanı bildirimleri ve kayıt yapıları gibi global using
yenilikleri içerir. Daha fazla bilgi için bkz . C# 10'daki yenilikler.
Bu çalışmayla uyumlu olarak, C# için .NET SDK proje şablonları bazı yeni dil özelliklerini kullanacak şekilde modernize edilmiştir:
async Main
Yöntemglobal using
yönergelerBu yeni dil özelliklerini proje şablonlarına ekleyerek, yeni kod özelliklerin etkinleştirildiği şekilde başlar. Ancak, .NET 6'ya yükselttiğiniz zaman mevcut kod etkilenmez. Bu şablon değişiklikleri hakkında daha fazla bilgi için .NET SDK: C# proje şablonları modernleştirilmiş blog gönderisine bakın.
F# 6, F# diline ve F# Etkileşimli'ye çeşitli geliştirmeler ekler. Daha fazla bilgi için bkz . F# 6'daki yenilikler.
Visual Basic'in Visual Studio deneyiminde ve Windows Forms proje başlatmasında geliştirmeleri vardır.
.NET SDK'sının boyutunu daha küçük tutmak için bazı bileşenler yeni, isteğe bağlı SDK iş yüklerine yerleştirilmiştir. Bu bileşenler arasında .NET MAUI ve Blazor WebAssembly AOT bulunur. Visual Studio kullanıyorsanız, ihtiyacınız olan SDK iş yüklerini yüklemeyle ilgilenir. .NET CLI kullanıyorsanız, yeni dotnet workload
komutları kullanarak iş yüklerini yönetebilirsiniz:
Komut | Açıklama |
---|---|
dotnet iş yükü araması | Kullanılabilir iş yüklerini arar. |
dotnet iş yükü yükleme | Belirtilen iş yükünü yükler. |
dotnet iş yükü kaldırma | Belirtilen iş yükünü kaldırır. |
dotnet iş yükü güncelleştirmesi | yüklü iş yüklerini Güncelleştirmeler. |
dotnet iş yükü onarımı | Bozuk bir yüklemeyi onarmak için tüm yüklü iş yüklerini yeniden yükler. |
dotnet iş yükü listesi | Yüklü iş yüklerini listeler. |
Daha fazla bilgi için bkz . İsteğe bağlı SDK iş yükleri.
.NET 6'da System.Text.Json artık bir "endüstriyel güç" serileştirme çözümü olacak şekilde birçok geliştirme yapılmıştır.
.NET 6 için System.Text.Jsonyeni bir kaynak oluşturucu ekler. Kaynak oluşturma ile JsonSerializer çalışır ve birden çok şekilde yapılandırılabilir. Performansı artırabilir, bellek kullanımını azaltabilir ve montaj kırpmayı kolaylaştırabilir. Daha fazla bilgi için bkz . How to choose reflection or source generation in System.Text.Json and How to use source generation in System.Text.Json.
Önceden var olan salt okunur DOM'a ek olan yeni, yazılabilir belge nesne modeli (DOM) eklendi. Yeni API, düz eski CLR nesnesi (POCO) türlerinin kullanılmasının mümkün olmadığı durumlar için basit bir serileştirme alternatifi sağlar. Ayrıca büyük bir JSON ağacının alt bölümüne verimli bir şekilde gitmenize ve bir dizi okumanıza veya bu alt bölüme ait bir POCO'nun seri durumdan çıkarılmasına olanak tanır. Yazılabilir DOM'yi desteklemek için aşağıdaki yeni türler eklendi:
Daha fazla bilgi için bkz . JSON DOM seçenekleri.
System.Text.Json artık örneklerle IAsyncEnumerable<T> serileştirmeyi ve seri durumdan çıkarmayı destekliyor. Zaman uyumsuz serileştirme yöntemleri, bir nesne grafiğindeki tüm IAsyncEnumerable<T> örnekleri numaralandırır ve sonra bunları JSON dizileri olarak seri hale getirir. Seri durumdan çıkarma için yeni yöntem JsonSerializer.DeserializeAsyncEnumerable<TValue>(Stream, JsonSerializerOptions, CancellationToken) eklendi. Daha fazla bilgi için bkz . IAsyncEnumerable serileştirme.
Doğrulama ve varsayılan değerler için yeni serileştirme arabirimleri:
Daha fazla bilgi için bkz . Geri çağırmalar.
Yeni özellik sıralama özniteliği:
Daha fazla bilgi için bkz . Serileştirilmiş özelliklerin sırasını yapılandırma.
"Ham" JSON yazmak için yeni yöntem:
Daha fazla bilgi için bkz . Write Raw JSON.
Akışa zaman uyumlu serileştirme ve seri durumdan çıkarma:
Serileştirme sırasında bir başvuru döngüsü algılandığında nesneyi yoksaymak için yeni seçenek:
Daha fazla bilgi için bkz . Döngüsel başvuruları yoksayma.
ile System.Text.Json
seri hale getirme ve seri durumdan çıkarma hakkında daha fazla bilgi için bkz . .NET'te JSON serileştirme ve seri durumdan çıkarma.
.NET 6, HTTP'nin yeni bir sürümü olan HTTP/3 için önizleme desteği içerir. HTTP/3, QUIC adlı yeni bir temel bağlantı protokolü kullanarak mevcut bazı işlevsel ve performans zorluklarını çözer. QUIC, bağlantıları daha hızlı kurar ve bağlantılar IP adresinden bağımsızdır ve mobil istemcilerin Wi-fi ve hücresel ağlar arasında dolaşıma girmesine olanak tanır. Daha fazla bilgi için bkz . HttpClient ile HTTP/3 kullanma.
ASP.NET Core, blazor WebAssembly uygulamaları ve tek sayfalı uygulamalar için minimum API'lerde, önceden (AOT) derlemesinde iyileştirmeler içerir. Ayrıca Blazor bileşenleri artık JavaScript'ten işlenebilir ve mevcut JavaScript tabanlı uygulamalarla tümleştirilebilir. Daha fazla bilgi için bkz . ASP.NET Core 6'daki yenilikler.
.NET 6, yazılımlarınızın performansını ve davranışını analiz etmenize yardımcı olan araçlar, API'ler ve SDK'lardan oluşan bir koleksiyon olan OpenTelemetry için geliştirilmiş destek sağlar. Ad alanında api'ler System.Diagnostics.Metrics OpenTelemetry Metrics API belirtimini uygular. Örneğin, farklı ölçüm senaryolarını destekleyen dört araç sınıfı vardır. Araç sınıfları şunlardır:
.NET 6, iki önemli güvenlik azaltması için önizleme desteği ekler: Denetim akışı Zorlama Teknolojisi (CET) ve "özel yürütme yazma" (W^X).
CET, bazı yeni Intel ve AMD işlemcilerde kullanılabilen bir Intel teknolojisidir. Donanıma bazı denetim akışı ele geçirme saldırılarına karşı koruma sağlayan özellikler ekler. .NET 6, Windows x64 uygulamaları için CET desteği sağlar ve bunu açıkça etkinleştirmeniz gerekir. Daha fazla bilgi için bkz . Intel CET gölge yığınlarıyla .NET 6 uyumluluğu.
W^X, .NET 6 yüklü tüm işletim sistemlerinde kullanılabilir ancak yalnızca Apple Silicon'da varsayılan olarak etkindir. W^X, bellek sayfalarının aynı anda yazılabilir ve yürütülebilir olmasını engelleyerek en basit saldırı yolunu engeller.
Bağımsız dağıtımların kırpılması iyileştirildi. .NET 5'te yalnızca kullanılmayan derlemeler kırpıldı. .NET 6, kullanılmayan türlerin ve üyelerin kırpmasını da ekler. Ayrıca, kırpmanın çalışma zamanında kullanılan kodu kaldırabileceği yerler konusunda sizi uyaran kırpma uyarıları artık varsayılan olarak etkindir . Daha fazla bilgi için bkz . Bağımsız dağıtımları ve yürütülebilir dosyaları kırpma.
.NET 6 SDK'sı API uyumluluğu, platform uyumluluğu, kırpma güvenliği, dize birleştirme ve bölmede span kullanımı, daha hızlı dize API'leri ve daha hızlı koleksiyon API'leri ile ilgili birkaç yeni kod çözümleyicisi içerir. Yeni (ve kaldırılan) çözümleyicilerin tam listesi için bkz . Çözümleyici sürümleri - .NET 6.
Platform uyumluluğu çözümleyicisi, sınıfındaki OperatingSystemIs<Platform>
yöntemleri (örneğin, OperatingSystem.IsWindows()platform koruyucuları olarak) tanır. Özel platform korumalarına izin vermek için .NET 6, desteklenen veya desteklenmeyen bir platform adına sahip alanlara, özelliklere veya yöntemlere açıklama eklemek için kullanabileceğiniz iki yeni öznitelik ekler:
Application.SetDefaultFont(Font) , .NET 6'da uygulamanız genelinde varsayılan yazı tipini ayarlayan yeni bir yöntemdir.
C# Windows Forms uygulamaları için şablonlar yönergeleri, dosya kapsamlı ad alanlarını ve null atanabilir başvuru türlerini destekleyecek global using
şekilde güncelleştirildi. Buna ek olarak, ortak kodu azaltan ve Windows Forms tasarımcısının tasarım yüzeyini tercih edilen yazı tipinde işlemesini sağlayan uygulama önyükleme kodunu içerir. Bootstrap kodu, gibi Application.EnableVisualStyles()diğer yapılandırma yöntemlerine ApplicationConfiguration.Initialize()
çağrılar yayan kaynak tarafından oluşturulan bir yöntem olan öğesine yapılan bir çağrıdır. Ayrıca, ApplicationDefaultFont MSBuild özelliği aracılığıyla varsayılan olmayan bir yazı tipi ayarlarsanız, ApplicationConfiguration.Initialize()
öğesine SetDefaultFont(Font)bir çağrı yayar.
Daha fazla bilgi için Windows Forms'daki yenilikler blog gönderisine bakın.
.NET SDK'sının tüm kaynağını içeren kaynak tarball artık .NET SDK derlemesinin bir ürünüdür. Red Hat gibi diğer kuruluşlar bu kaynak tarball'ı kullanarak SDK'nın kendi sürümünü oluşturabilir.
.NET 6 için , ve net6.0-macos
gibi net6.0-android
net6.0-ios
işletim sistemine özgü ek hedef çerçeve adları (TFM' ler) eklenmiştir. Daha fazla bilgi için bkz . .NET 5+ işletim sistemine özgü TFM'ler.
Önizlemede, .NET 6'daki genel türlerde işleçleri kullanma özelliğidir. .NET 6, C# 10'un yeni önizleme özelliği static abstract
olan arabirim üyelerinden yararlanan çok sayıda arabirim sunar. Bu arabirimler farklı işleçlere karşılık gelir, örneğin işlecini IAdditionOperators
+
temsil eder. Arabirimler System.Runtime.Experimental NuGet paketinde kullanılabilir. Daha fazla bilgi için Genel matematik blog gönderisine bakın.
NuGet kitaplık geliştiricisiyseniz, yeni paket doğrulama araçları paketlerinizin tutarlı ve iyi biçimlendirilmiş olduğunu doğrulamanızı sağlar. Aşağıdakilerin olup olmadığını belirleyebilirsiniz:
Daha fazla bilgi için Paket Doğrulama blog gönderisine bakın.
.NET 6, kodu inceleyen ve null atanabilirlik bilgileri sağlayan aşağıdaki yeni API'leri sunar:
Bu API'ler yansıma tabanlı araçlar ve serileştiriciler için kullanışlıdır.
Aşağıdaki tabloda gösterildiği gibi çeşitli uzantı ad alanlarının .NET 6'da geliştirmeleri vardır.
Ad Alanı | İyileştirmeler |
---|---|
Microsoft.Extensions.DependencyInjection | CreateAsyncScope , bir hizmeti kaydeden bir hizmet sağlayıcısı için bir deyimi güvenli bir şekilde kullanmanıza using IAsyncDisposable olanak tanır. |
Microsoft.Extensions.Hosting | Yeni ConfigureHostOptions yöntemler uygulama kurulumunu basitleştirir. |
Microsoft.Extensions.Logging | Microsoft.Extensions.Logging , performans günlüğü API'leri için yeni bir kaynak oluşturucuya sahiptir. Yeni bir günlük yöntemine partial eklerseniz LoggerMessageAttribute kaynak oluşturucu tetikleniyor. Derleme zamanında, oluşturucu yönteminin partial uygulamasını oluşturur ve bu genellikle çalışma zamanında mevcut günlük çözümlerine göre daha hızlıdır. Daha fazla bilgi için bkz . Derleme zamanı günlüğü kaynak oluşturma. |
.NET 6'da çok sayıda LINQ yöntemi eklenmiştir. Aşağıdaki tabloda listelenen yeni yöntemlerin çoğunun türünde eşdeğer yöntemleri System.Linq.Queryable vardır.
.NET 6'ya aşağıdaki iki yapı eklendi: System.DateOnly ve System.TimeOnly. Bunlar sırasıyla tarih bölümünü ve bir DateTimeöğesinin saat bölümünü temsil edin. DateOnly doğum günleri ve yıldönümleri TimeOnly için ve günlük alarmlar ve haftalık iş saatleri için yararlıdır.
Artık saat dilimi verilerinin yüklü olduğu herhangi bir işletim sisteminde İnternet Tarafından Atanan Numaralar Yetkilisi (IANA) veya Windows saat dilimi kimliklerini kullanabilirsiniz. yöntemi, TimeZoneInfo.FindSystemTimeZoneById(String) istenen saat dilimi sistemde bulunamazsa, girişlerini otomatik olarak bir Windows saat diliminden IANA saat dilimine (veya tam tersi) dönüştürecek şekilde güncelleştirildi. Buna ek olarak, yeni yöntemler TryConvertIanaIdToWindowsId(String, String) ve TryConvertWindowsIdToIanaId hala bir saat dilimi biçiminden diğerine el ile dönüştürmeniz gerektiğinde senaryolar için eklenmiştir.
Birkaç saat dilimi iyileştirmesi daha vardır. Daha fazla bilgi için bkz . .NET 6'da Tarih, Saat ve Saat Dilimi Geliştirmeleri.
Yeni PriorityQueue<TElement,TPriority> sınıf, hem değer hem de önceliğe sahip öğe koleksiyonunu temsil eder. Öğeler artan öncelik sırasına göre sıralanır; yani önce en düşük öncelik değerine sahip öğe sıralanır. Bu sınıf en düşük yığın veri yapısını uygular.
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Eğitim
Modül
C'de null güvenlik# - Training
NullReferenceException oluşumunu önlemeye yardımcı olacak kodlama uygulamalarını öğrenin.