Junior
C#-da istinad növləri (Reference Type) və dəyər növləri (Value Type) arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
İstinad tipləri, məlumatların yerləşdiyi yaddaş ünvanını saxlayır. Dəyər tipləri isə, məlumatları birbaşa dəyişəndə saxlayır.
İstinad tipləri:
System.Object-dən irsən alır.- Yığma (heap) yaddaşında yerləşir.
- Bir istinad tipli dəyişəni digərinə təyin etdikdə, məlumatların özləri deyil, referans kopyalanır.
- Standart olaraq,
nullilə başlanır. - Siniflər (
class), interfeyslər (interface), delegatlar (delegate), massivlər (array), sətirlər (string) daxildir.
Dəyər tipləri:
System.ValueType-dən irsən alır (bu daSystem.Object-dən irsən alır).- Yığımda (
stack) və ya referans tiplərinin sahəsi olduqda obyekt daxilində yerləşir. - Bir dəyər tipi dəyişəni digərinə təyin etdikdə, məlumatlar özləri kopyalanır.
- Standart olaraq, sıfır dəyəri ilə (
0ədədlər üçün,falseboolüçün, boş struktur üçün) başlanır. - Struktur (
struct), enum (enum), daxili məlumat tipləri (int, float, bool və s.) daxildir.
Nümunə:
// İstinad tipi
public class MyClass
{
public int Value;
}
// Dəyər tipi
public struct MyStruct
{
public int Value;
}
// İstifadə
MyClass obj1 = new MyClass { Value = 10 };
MyClass obj2 = obj1; // hər ikisi eyni obyektə istinad edir
obj2.Value = 20; // dəyişiklik, obj1-ə təsir edir
Console.WriteLine(obj1.Value); // 20 göstərəcək
MyStruct s1 = new MyStruct { Value = 10 };
MyStruct s2 = s1; // məlumatlar kopyalanır, s2 müstəqil nüsxədir
s2.Value = 20; // dəyişiklik, s1-ə təsir etmir
Console.WriteLine(s1.Value); // 10 göstərəcək