در این پست، یاد بگیرید که چه زمانی از یک کلاس در مقابل یک رکورد در مقابل یک ساختار در سی شارپ استفاده کنید.
در سی شارپ، کلاس یک نوع مرجع است که می تواند برای تعریف یک شی مورد استفاده قرار گیرد. این می تواند شامل فیلدها، ویژگی ها، روش ها و رویدادها باشد. کلاس ها معمولاً برای تعریف انواع پیچیده ای استفاده می شوند که هم داده و هم رفتار دارند. به طور کلی، اگر نیاز به تعریف یک ساختار داده ساده دارید، از یک رکورد استفاده کنید. اگر نیاز به تعریف یک نوع پیچیده با رفتار دارید، از یک کلاس استفاده کنید. اگر به یک شی سبک وزن نیاز دارید که دارای چند فیلد داده باشد، از یک ساختار استفاده کنید.
در اینجا مثالی از یک کلاس ساده در سی شارپ آمده است:
{
public string Name { get; set; }
public int Age { get; set; }
public void Bark()
{
Console.WriteLine("Woof woof!");
}
}
این مثال کلاسی به نام Dog را با دو ویژگی "Name" و "Age" و متد "Bark" تعریف می کند. ویژگی های "Name" و "Age" با یک دسترسی get و set تعریف می شوند، به این معنی که می توان آنها را خواند و نوشت تا متغیرهای عمومی را دوست داشته باشند. روش "Bark" می نویسد "Woof Woof!" هنگام تماس به کنسول
myDog.Name = "Fido";
myDog.Age = 3;
myDog.Bark();
این یک نمونه از کلاس Dog ایجاد می کند، ویژگی های آن را تنظیم می کند و Bark Method را فراخوانی می کند.
زبان سی شارپ از انواع کلاس ها پشتیبانی می کند. انواع مختلف کلاس ها در سی شارپ را بررسی کنید .
رکورد یک ویژگی جدید معرفی شده در C# 9.0 است که یک نوع مرجع است که برای تعریف ساختارهای داده ساده استفاده می شود. رکوردها شبیه به کلاس ها هستند، اما دارای برخی ویژگی های اضافی مانند ویژگی های خودکار، برابری و تغییر ناپذیری هستند.
در اینجا یک مثال از یک رکورد ساده در سی شارپ آورده شده است:
{
public int X { get; init; }
public int Y { get; init; }
public Point(int x, int y) => (X, Y) = (x, y);
}
این مثال رکوردی به نام «نقطه» را با دو ویژگی تعریف میکند، «X» و «Y» که هر دو با یک accessor get و init تعریف میشوند، به این معنی که میتوان آنها را فقط در حین مقداردهی اولیه خواند و نوشت. رکورد همچنین دارای سازنده ای است که x و y را به عنوان ورودی می پذیرد و آن را به ویژگی ها اختصاص می دهد
Console.WriteLine($"({point.X}, {point.Y})");
این یک نمونه از رکورد Point ایجاد می کند، و مقادیر 1، 2 را به X و Y اختصاص می دهد. دستور WriteLine مقادیر نقطه (1،2) را چاپ می کند.
توجه داشته باشید که رکوردها به طور پیش فرض تغییر ناپذیر هستند، به این معنی که پس از ایجاد یک نمونه رکورد، ویژگی های رکورد را نمی توان تغییر داد. اگر می خواهید ویژگی ها را تغییر دهید، می توانید از کلمه کلیدی with برای ایجاد یک رکورد جدید با ویژگی های به روز شده استفاده کنید.
در اینجا بیشتر بدانید: آشنایی با انواع رکورد در سی شارپ
ساختار یک نوع مقدار است که می تواند برای تعریف یک شی سبک استفاده شود. مانند یک کلاس، میتواند شامل فیلدها، ویژگیها، متدها و رویدادها باشد، اما ساختارها معمولاً برای تعریف انواع کوچک و ساده که چند فیلد داده را در خود جای میدهند استفاده میشوند. ساختارها در پشته ذخیره می شوند، در حالی که کلاس ها در پشته ذخیره می شوند.