Open AidaHagh opened 2 months ago
int a = 10; int b = a; // دریافت میکند a یک کپی از مقدار b b = 20; Console.WriteLine(a); // خروجی: 10 Console.WriteLine(b); // خروجی: 20
class Person { public string Name { get; set; } }
Person person1 = new Person { Name = "Ali" }; Person person2 = person1; // به آن اشاره میکندperson1 به همان آدرس حافظهای اشاره میکند که person2 person2.Name = "Babak"; Console.WriteLine(person1.Name); // خروجی: Babak Console.WriteLine(person2.Name); // خروجی: Babak
انواع دادهها به دو دستهی اصلی تقسیم میشوند: نوع مرجع (Reference Type) و نوع مقدار (Value Type). این دو نوع داده به طور متفاوتی در حافظه ذخیره میشوند و رفتار متفاوتی دارند. نوع مقدار (Value Type): دادههایی هستند که مستقیماً مقادیر خود را ذخیره میکنند. این نوع دادهها در استک (Stack) ذخیره میشوند و وقتی به متغیر دیگری اختصاص داده میشوند، یک کپی از مقدار آنها ایجاد میشود.شامل انواع دادههای ساده (مانند int, float, bool)، ساختارها (struct) و انواع شمارشی (enum) هستند.دارای عمر کوتاهمدت و خودکار مدیریت میشوند.نمیتوانیم null تعریفشون کنیم مگر بصورت زیر:
int? age=null ;
نوع مرجع (Reference Type): دادههایی هستند که به آدرس حافظهای که مقدار در آن ذخیره شده است، اشاره میکنند. این نوع دادهها در هیپ (Heap) ذخیره میشوند و وقتی به متغیر دیگری اختصاص داده میشوند، هر دو متغیر به یک آدرس حافظه اشاره میکنند.شامل کلاسها (class)، آرایهها، رشتهها (string)، و واسطها (interface) هستند.(هر چیزی که new میکنیم رفرنس تایپ هست.)دارای عمر بلندمدتتر و توسط جمعآوری زباله (Garbage Collector) مدیریت میشوند.