.NET'te kod sözleşmeleri hakkında bilgi ediniyorum ve saf yapıcılar fikrini anlamaya çalışıyorum. Kod sözleşmeleri belgelerine durumları:
Bir sözleşme kapsamında çağrılan tüm yöntemler saf olmalıdır; yani önceden var olan herhangi bir durumu güncellememeleri gerekir. Bir saf yöntemin, saf yönteme girdikten sonra oluşturulan nesneleri değiştirmesine izin verilir.
Ve PureAttribute
belgeler şöyle diyor:
Bir tür veya yöntemin saf olduğunu, yani herhangi bir görünür durum değişikliği yapmadığını gösterir.
Yöntemler söz konusu olduğunda bu ifadeleri anlıyorum, ama ya yapıcılar? Diyelim ki böyle bir sınıfınız var:
public class Foo
{
public int Value { get; set; }
public Foo(int value) {
this.Value = value;
}
}
Bu kurucu, yeni Foo
nesnenin durumunu açıkça etkiler , ancak başka hiçbir yan etkisi yoktur (örn. Parametrelerin hiçbirini manipüle etmez veya saf olmayan yöntemler çağırmaz). Bu aday mı [Pure]
değil mi? Bir yapıcıya bir [Pure]
öznitelik yerleştirmenin önemi nedir ve bunu kendi kodumda ne zaman yapmalıyım?