Target-Typed New¶
C# 9.0 ile gelen target-typed new
özelliği, tür çıkarımını kolaylaştırarak kodunuzu daha kısa ve okunabilir hale getirir. Ancak, yanlış kullanımlar kodun anlaşılabilirliğini ve bakımını zorlaştırabilir.
1. Hedef Türün Belirsiz Olduğu Durumlar¶
❌ Yanlış Kullanım: Hedef türün açık olmadığı durumlarda target-typed new
kullanmak.
var person = new(); // Hangi tür olduğu anlaşılamaz
person.Name = "Murat";
✅ İdeal Kullanım: Hedef türün net bir şekilde belirtildiği durumlarda kullanın.
Person person = new();
person.Name = "Murat";
Tanım:
public class Person
{
public string Name { get; set; }
}
2. Karmaşık İfadelerde Target-Typed new
Kullanmak¶
❌ Yanlış Kullanım: Target-typed new
‘i karmaşık ifadelerde kullanarak kodu daha az okunabilir hale getirmek.
var person = new("Murat", 33); // Özellikle birden fazla constructor varsa belirsizlik yaratabilir
✅ İdeal Kullanım: Target-typed new
‘i basit ifadelerde kullanın.
Person person = new("Murat", 33);
Constructor Tanımı:
public Person(string name, int age)
{
Name = name;
Age = age;
}
3. Koleksiyonlarda Kullanımı Yanlış Yönetmek¶
❌ Yanlış Kullanım: Koleksiyon oluştururken hedef türü belirtmemek.
var people = new List<Person>
{
new() { Name = "Murat" },
new() { Name = "Derin" }
};
✅ İdeal Kullanım: Koleksiyonun türünü açıkça belirtin.
List<Person> people = new()
{
new() { Name = "Murat" },
new() { Name = "Derin" }
};
4. İsimlendirilmiş Argümanlarla Hatalı Kullanım¶
❌ Yanlış Kullanım: İsimlendirilmiş argümanlarla target-typed new
kullanımı belirsizlik yaratabilir.
var person = new(name: "Murat", age: 33);
✅ İdeal Kullanım: İsimlendirilmiş argümanlar kullanırken hedef türü netleştirin.
Person person = new(name: "Murat", age: 33);
5. Target-Typed new
ve Nullable
Türler¶
❌ Yanlış Kullanım: Nullable türlerle target-typed new
kullanımı yanlış anlaşılmalara yol açabilir.
Person? person = new(); // Nullable ama hangi constructor çağrıldığı belirsiz
✅ İdeal Kullanım: Nullable türlerle kullanımda hedef türü netleştirin.
Person? person = new Person();
6. Test Edilebilirliği Göz Ardı Etmek¶
❌ Yanlış Kullanım: Test edilebilirlik açısından target-typed new
‘in etkisini dikkate almamak.
var service = new();
✅ İdeal Kullanım: Türü net bir şekilde belirtin ve test edilebilirliği artırın.
IService service = new ServiceImplementation();
Tanım:
public interface IService { }
public class ServiceImplementation : IService { }