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