آموزش ویژگی ها در سی شارپ به زبان ساده
ویژگی ها به شما امکان می دهد تا دسترسی به متغیرهای کلاس را کنترل کنید، و روش پیشنهادی برای دسترسی به متغیرها از خارج، در یک زبان برنامه نویسی شیء گرا مانند سی شارپ است. در فصلی که درباره ی کلاس ها صحبت کردیم، برای اولین بار شاهد استفاده از یک ویژگی بودیم که مفهوم واقعاً ساده ای داشت. یک ویژگی بسیار شبیه به ترکیبی از یک متغیر و یک متد است – نمی تواند هیچ پارامتری را اتخاذ کند، اما شما می توانید قبل از اختصاص آن به متغیر بازگشتی ما، مقدار را پردازش کنید.
ویژگیها (Properties) در سیشارپ یکی از مفاهیم کلیدی برای مدیریت دسترسی به دادههای کلاسها هستند. ویژگیها امکان تعریف دسترسیهای کنترلشده به فیلدهای خصوصی یک کلاس را فراهم میکنند و به شکلگیری کدهای خوانا و امن کمک میکنند. در ادامه به معرفی ویژگیها، نحوه استفاده و انواع مختلف آنها میپردازیم.
تعریف ویژگیها
ویژگیها به صورت جفتی از متدهای get و set تعریف میشوند. متد `get` برای بازیابی مقدار ویژگی و متد `set` برای تنظیم مقدار ویژگی استفاده میشود. ویژگیها مانند فیلدها استفاده میشوند، اما در واقع به عنوان متدهایی عمل میکنند که دسترسی کنترلشده به دادهها را فراهم میکنند.
مثال ساده از ویژگی
class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
در این مثال، ویژگی `Name` امکان دسترسی به فیلد خصوصی `name` را فراهم میکند.
ویژگیهای خودکار (Auto-Implemented Properties)
سیشارپ ویژگیهای خودکار را معرفی کرده است که به شما اجازه میدهد ویژگیها را بدون نیاز به تعریف فیلدهای خصوصی به صورت مختصر تعریف کنید. در این حالت، کامپایلر به طور خودکار فیلدهای پشتیبان (backing fields) را ایجاد میکند.
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
ویژگیهای فقط خواندنی و فقط نوشتنی
ویژگیهای فقط خواندنی دارای متد `get` و بدون متد `set` هستند، بنابراین مقدار آنها فقط قابل خواندن است و نمیتوان آن را تغییر داد. ویژگیهای فقط نوشتنی برعکس، دارای متد `set` و بدون متد `get` هستند.
ویژگی فقط خواندنی
class Person
{
private string name;
public Person(string name)
{
this.name = name;
}
public string Name
{
get { return name; }
}
}
ویژگی فقط نوشتنی
class Person
{
private string name;
public string Name
{
set { name = value; }
}
}
ویژگیهای محاسباتی (Computed Properties)
ویژگیهای محاسباتی میتوانند مقداری را بر اساس محاسبات و منطق ارائه دهند و به دادهها دسترسی نداشته باشند. این ویژگیها اغلب برای ترکیب یا تبدیل دادههای چندین فیلد استفاده میشوند.
class Rectangle
{
برنامه نویسی سی شارپ رو قورت بده! بدون کلاس، سرعت 2 برابر، ماندگاری 3 برابر، پولسازی با ساخت اپلیکیشن، توسعه وب ... دانلود:
public double Width { get; set; }
public double Height { get; set; }
public double Area
{
get { return Width * Height; }
}
}
ویژگیهای استاتیک (Static Properties)
ویژگیهای استاتیک به کلاس تعلق دارند و نه به نمونههای آن. این ویژگیها میتوانند بدون ایجاد نمونهای از کلاس فراخوانی شوند.
class Configuration
{
private static string appName;
public static string AppName
{
get { return appName; }
set { appName = value; }
}
}
اعتبارسنجی در ویژگیها
ویژگیها میتوانند شامل منطق اعتبارسنجی باشند تا از تنظیم مقادیر نامعتبر جلوگیری کنند. این کار با استفاده از بلوک `set` انجام میشود.
class Person
{
private int age;
public int Age
{
get { return age; }
set
{
if (value < 0 || value > 120)
throw new ArgumentOutOfRangeException("Age must be between 0 and 120");
age = value;
}
}
}
استفاده از `prop` و `propfull` در ویژوال استودیو
در ویژوال استودیو، میتوانید از کلمات کلیدی `prop` و `propfull` برای تولید سریع ویژگیها استفاده کنید:
`prop`: برای ایجاد ویژگی خودکار:
prop [tab][tab]
خروجی:
public int MyProperty { get; set; }
propfull`: برای ایجاد ویژگی با فیلد پشتیبان:
propfull [tab][tab]
خروجی:
private int myVar;
public int MyProperty
{
get { return myVar; }
set { myVar = value; }
}
نتیجهگیری
ویژگیها در سیشارپ ابزار قدرتمندی برای مدیریت دسترسی به دادههای کلاسها هستند. با استفاده از ویژگیها میتوان کنترل دقیقی بر نحوهی دسترسی و تغییر دادهها اعمال کرد، کدهای خوانا و امن نوشت و از مزایای کپسولهسازی بهرهمند شد. از ویژگیهای خودکار، ویژگیهای محاسباتی و منطق اعتبارسنجی در ویژگیها برای بهبود کدهای خود استفاده کنید.