Sobes.tech
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