C# 15'teki yenilikler

C# 15 aşağıdaki yeni özellikleri içerir. En son Visual Studio 2026 insider sürümünü veya .NET 11 önizleme SDK'sını kullanarak bu özellikleri deneyin:

C# 15, en son C# önizleme sürümüdür. .NET 11 önizleme sürümleri C# 15'i destekler. Daha fazla bilgi için bkz. C# dili sürüm oluşturma.

.NET indirmeleri sayfasından en son .NET 11 önizleme SDK'sını indirebilirsiniz. .NET 11 önizleme SDK'sını içeren Visual Studio 2026 insider'ları da indirebilirsiniz.

"C#'deki yenilikler" sayfası, genel önizleme sürümlerinde kullanıma sunulduğunda yeni özellikler ekler. Roslyn özellik durumu sayfasının çalışma kümesi bölümü, yaklaşmakta olan özelliklerin ana dala ne zaman birleştirildiğini izler.

C# 15'te sunulan hataya neden olan değişiklikleri, hataya neden olan değişiklikler hakkındaki makalemizde bulabilirsiniz.

Uyarı

Bu özelliklerle ilgili geri bildirimlerinizle ilgileniyoruz. Bu yeni özelliklerden herhangi biriyle ilgili sorunlar bulursanız, dotnet/roslyn deposunda yeni bir sorun oluşturun.

Koleksiyon ifadesi bağımsız değişkenleri

with(...) öğesini koleksiyon ifadesindeki ilk öğe olarak kullanarak bağımsız değişkenleri temel koleksiyonun oluşturucusuna veya fabrika yöntemine geçirebilirsiniz. Bu özellik, kapasite, karşılaştırıcılar veya diğer oluşturucu parametrelerini doğrudan koleksiyon ifadesi söz diziminde belirtmenizi sağlar.

Aşağıdaki örnekte, bir kapasite argümanını bir List<T> oluşturucuya ve bir karşılaştırıcıyı HashSet<T>'ye nasıl geçireceğiniz gösterilmektedir.

string[] values = ["one", "two", "three"];

// Pass capacity argument to List<T> constructor
List<string> names = [with(capacity: values.Length * 2), .. values];

// Pass comparer argument to HashSet<T> constructor
HashSet<string> set = [with(StringComparer.OrdinalIgnoreCase), "Hello", "HELLO", "hello"];
// set contains only one element because all strings are equal with OrdinalIgnoreCase

Koleksiyon ifadesi bağımsız değişkenleri hakkında daha fazla bilgi edinmek için koleksiyon ifadeleriyle ilgili dil başvurusu makalesine veya özellik belirtimi bakın. Koleksiyon başlatıcılarında koleksiyon ifadesi bağımsız değişkenlerini kullanma hakkında bilgi için bkz. Nesne ve Koleksiyon Başlatıcıları.

Birleşim türleri

C# 15, birden fazla birleşim türünden biri olabilecek bir değeri temsil eden vaka türlerini tanıtır. Bir birleşimi union anahtar sözcüğüyle bildirin.

public record class Cat(string Name);
public record class Dog(string Name);
public record class Bird(string Name);

public union Pet(Cat, Dog, Bird);

Birleşimler her durum tipinden gizli dönüşümler sağlar ve derleyici tüm durum tiplerinde ifadelerin kapsamlı olmasını sağlarswitch:

Pet pet = new Dog("Rex");

string name = pet switch
{
    Dog d => d.Name,
    Cat c => c.Name,
    Bird b => b.Name,
};

Birleşim türleri ilk olarak .NET 11 Preview 2'de görünür. .NET 11'in ilk önizlemelerinde UnionAttribute ve IUnion arabirimi çalışma zamanına dahil değildir, bu nedenle bunları projenizde bildirmeniz gerekir. Sonraki .NET 11 önizleme sürümleri bu çalışma zamanı türlerini içerir. Ayrıca, birleşim üyesi sağlayıcılar da dahil olmak üzere teklif belirtiminden bazı özellikler henüz uygulanmamaktadır. Bu özellikler gelecek önizlemelerde sunulacaktır.

Daha fazla bilgi için birleşim türleri veya özellik belirtimi kısmını, dil referansında inceleyebilirsiniz.