C# 10 Yenilikleri – Struct ve Anonymous type’larda with kullanımı

C# 10 ile gelen yeniliklerden biri de struct ve anonymous type’larda gelen with kullanımı.

C# 9 ile hayatımıza with expression’ı girmişti. With ile solundaki operand’ın property ve field’ları ile, sağında verilen özellikler göz önüne alınarak yeni bir kopyasını oluşturur. C# 9 ile gelen with kullanımı sadece record tipi için geçerliydi.

Kısaca bir kullanım olarak;

var p1 = new Person("Soner", "İstanbul" );
// p1.Name: Soner
// p1.City: İstanbul

var p2 = p1 with { City = "Kırklareli" };
// p2.Name: Soner
// p2.City: Kırklareli

public record Person(string Name, string City);

C# 10 ile artık struct ve anonim tiplerde de with kullanımına destek gelmiş oldu. Struct için aynı kodu şu şekilde değiştirebiliriz;

var p1 = new Person();
p1.Name = "Soner";
p1.City = "İstanbul";
// p1.Name: Soner
// p1.City: İstanbul

var p2 = p1 with { City = "Kırklareli" };
// p2.Name: Soner
// p2.City: Kırklareli

public struct Person
{
    public string Name;
    public string City;
}

Anonim tiplerde de aynı şekilde kullanabiliriz;

var p1 = new { Name = "Soner", City = "İstanbul" };
// p1.Name: Soner
// p1.City: İstanbul
var p2 = p1 with { Name = "Ahmet" };
// p2.Name: Ahmet
// p2.City: İstanbul

Kaynak: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/with-expression

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.