Junior — Middle
C# dilinde referans tipleri ile değer tipleri arasındaki farklar nelerdir ve kullanımda temel farklar nelerdir?
sobes.tech yapay zeka
AI'dan gelen yanıt
C#'ta türler değer türleri (value types) ve referans türleri (reference types) olarak ayrılır.
Değer Türleri verileri doğrudan depolar. Örnekler: int, double, struct. Bir atama veya metoda geçirilirken, değer kendisi kopyalanır, yani bağımsız bir kopya oluşturulur.
Referans Türleri bellekteki bir nesneye referans tutar (yığın). Örnekler: class, string, diziler. Atama sırasında sadece referans kopyalanır, nesne değil, bu nedenle birkaç değişken aynı nesneye referans verebilir.
Ana farklar:
- Depolama: değer türleri genellikle yığında, referans türleri yığında.
- Kopyalama: değer türleri değerle kopyalanır, referans türleri referansla.
- Değişiklikte davranış: bir değer türü değişikliği diğer kopyaları etkilemez, referans türü nesnesinde yapılan değişiklikler tüm referanslara yansır.
Örnek:
int a = 5;
int b = a; // değerin kopyası
a = 10; // a değişmeyecek, 5 kalacak
class Person { public string Name; }
Person p1 = new Person { Name = "Иван" };
Person p2 = p1; // referansın kopyası
p2.Name = "Пётр"; // p1.Name de "Пётр" olur