دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
کلمهی کلیدی sealed و object type در سی شارپ
1403/11/02 -
عملگر UNION در پایگاه داده SQL
1403/10/30 -
کلاسهای انتزاعی در سی شارپ
1403/10/30 -
توابع تبدیل کننده در پایگاه داده SQL
1403/10/29 -
متدهای override در سی شارپ
1403/10/28 -
توابع پنجره ای در پایگاه داده SQL
1403/10/28
کلمهی کلیدی sealed و object type در سی شارپ
کلمهی کلیدی sealed و object type
کلمهی کلیدی sealed و object type در سی شارپ نقشهای متفاوت ولی بسیار مهمی در این زبان دارند.
کلمهی کلیدی sealed برای محدود کردن ارثبری استفاده میشود.
وقتی یک کلاس با استفاده از این کلمه تعریف شود، دیگر نمیتوان از آن کلاس ارثبری کرد.
این ویژگی معمولاً برای جلوگیری از تغییر رفتار کلاسهای حساس یا برای افزایش امنیت و عملکرد برنامه استفاده میشود.
به عنوان مثال، اگر کلاسی را sealed کنیم، هیچ کلاس دیگری نمیتواند آن را به ارث ببرد و متدهای آن را تغییر دهد.
از سوی دیگر، object type پایهایترین نوع داده در سی شارپ است و تمام انواع دادههای دیگر از آن ارثبری میکنند.
این بدان معناست که هر دادهای در سی شارپ، از انواع اولیه مثل int و double گرفته تا انواع سفارشی، در نهایت نوع پایهای object را به ارث میبرند.
این ویژگی به برنامهنویسان اجازه میدهد تا دادههای مختلف را به شکل عمومی مدیریت کنند و در مواقعی مثل جعبهسازی (Boxing) یا تعریف متغیرهای عمومی از آن استفاده کنند.
ترکیب این دو مفهوم درک عمیقتری از طراحی کلاسها و مدیریت دادهها در سی شارپ ایجاد میکند.
مفهوم sealed در سی شارپ
کلمهی کلیدی sealed در زبان #C به نوعها و متدهایی اشاره دارد که نمیتوانند از آنها ارثبری (inherit) یا override شوند.
این کلمه به طور معمول در کلاسها و متدها به کار میرود و از این جهت به افزایش امنیت و بهینهسازی عملکرد کمک میکند.
در ادامه، نحوهی کاربرد sealed در #C را در چندین مورد مختلف بررسی میکنیم.
-
sealed در کلاسها
وقتی که یک کلاس بهعنوان sealed معرفی میشود، دیگر نمیتوان آن کلاس را به ارث برد (inherit) یا به نوع دیگری گسترش داد.
به عبارت دیگر، یک کلاس sealed نمیتواند یک کلاس پایه برای کلاسهای دیگر باشد.
مثال:
public sealed class FinalClass
{
public void DisplayMessage()
{
Console.WriteLine("This is a sealed class.");
}
}
در مثال بالا، کلاس FinalClass بهعنوان یک کلاس sealed معرفی شده است.
این کلاس نمیتواند بهعنوان یک کلاس پایه برای ارثبری دیگر کلاسها استفاده شود.
اگر سعی کنید کلاسی را از این کلاس به ارث ببرید، کامپایلر خطا خواهد داد.
مثال خطا:
public class DerivedClass : FinalClass // خطا: نمیتوان از یک کلاس sealed ارث برد.
{
}
در اینجا، تلاش برای ایجاد کلاسی از FinalClass به ارث برده میشود، اما چون کلاس FinalClass یک کلاس sealed است، این عملیات باعث بروز خطا میشود.
🌟 آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
شرکت در دوره آموزش برنامه نویسی سی شارپ
-
sealed در متدها
در زبان #C، وقتی که یک متد در یک کلاس بهعنوان sealed مشخص میشود، دیگر نمیتوان آن را در کلاسهای مشتقشده (derived classes) بازنویسی یا override کرد.
مثال:
public class BaseClass
{
public virtual void DisplayMessage()
{
Console.WriteLine("This is a base class method.");
}
}
public class DerivedClass : BaseClass
{
public sealed override void DisplayMessage() // متد در DerivedClass sealed شده است.
{
Console.WriteLine("This is a sealed method in the derived class.");
}
}
public class FurtherDerivedClass : DerivedClass
{
public override void DisplayMessage() // خطا: متد sealed قابل override نیست.
{
Console.WriteLine("This should not compile.");
}
}
در این مثال، کلاس BaseClass یک متد DisplayMessage را بهصورت virtual تعریف کرده است تا قابلیت override شدن را داشته باشد.
در DerivedClass، این متد بهصورت sealed override شده است.
بنابراین، در کلاسهای بیشتر از DerivedClass، تلاش برای override کردن این متد باعث ایجاد خطا خواهد شد.
-
چرا از sealed استفاده کنیم؟
-
افزایش عملکرد
در بسیاری از مواقع، استفاده از کلمهی کلیدی sealed باعث بهینهسازی عملکرد برنامه میشود، زیرا کامپایلر میتواند فرض کند که کد نهایی شده و تغییرات بیشتری در آن انجام نخواهد شد.
به این ترتیب، این امکان را فراهم میآورد که کد در زمان اجرا بهطور مؤثرتری اجرا شود. -
امنیت کد
وقتی از sealed در کلاسها و متدها استفاده میکنیم، به نوعی از تغییرات ناخواسته و احتمالی در کد جلوگیری میکنیم.
این باعث میشود که ساختار کلاسها و متدهای خاص در کد شما ثابت باقی بماند و از دستکاریهای غیرمجاز جلوگیری شود.
-
شیء (Object Type) در سی شارپ
در سی شارپ، نوع شیء یا object بهعنوان یک نوع داده پایه در این زبان عمل میکند که تمام انواع دادهها، از جمله انواع پیشفرض و انواع سفارشی، از آن مشتق شدهاند.
این یعنی هر شیء در سی شارپ از کلاس object ارث میبرد و میتوان آن را بهعنوان یک شیء (object) عمومی ذخیره کرد.
در این بخش، به بررسی جزئیات بیشتری از نوع شیء و کاربردهای آن در سی شارپ خواهیم پرداخت.
-
تعریف object در سی شارپ
کلاس object در سی شارپ یک نوع عمومی است که بهطور پیشفرض در تمام کلاسها، ساختارها و انواع دادهها وجود دارد.
تمام انواع داده در سی شارپ در نهایت از این کلاس ارث میبرند.
مثال:
object myObject = 42; // int به object تبدیل میشود
Console.WriteLine(myObject); // خروجی: 42
myObject = "Hello, world!"; // string به object تبدیل میشود
Console.WriteLine(myObject); // خروجی: Hello, world!
در این مثال، متغیر myObject ابتدا یک عدد صحیح (int) را ذخیره میکند و سپس یک رشته (string) را نگهداری میکند.
این امر نشان میدهد که object میتواند هر نوع دادهای را ذخیره کند.
-
تبدیل بین نوع شیء و سایر انواع دادهها
یکی از ویژگیهای جالب نوع object این است که میتواند هر نوع دادهای را نگهداری کند.
اما برای استفاده از مقادیر ذخیرهشده در آن، نیاز به تبدیل (casting) به نوع اصلی داریم.
مثال:
object myObject = 100; // ذخیره عدد
int number = (int)myObject; // تبدیل شیء به نوع int
Console.WriteLine(number); // خروجی: 100
در این مثال، متغیر myObject ابتدا یک عدد صحیح (100) را بهعنوان شیء نگهداری میکند.
سپس برای استفاده از آن بهعنوان یک عدد صحیح، آن را بهطور صریح به نوع int تبدیل میکنیم.
-
ویژگیهای object در سی شارپ
-
مسیر عمومی
چون تمام انواع دادهها از object ارث میبرند، میتوان یک شیء را بهصورت عمومی ذخیره کرد.
این ویژگی برای ذخیرهسازی انواع مختلف دادهها در ساختارهای دادهای (مانند لیستها یا دیکشنریها) بسیار مفید است. -
متدهای مشترک
همهی اشیاء در #C به دلیل ارثبری از object، دسترسی به متدهای مشترک مانند ()ToString() , Equals() , GetHashCode و غیره را دارند.
این متدها میتوانند برای انجام عملیاتهای عمومی بر روی هر شیء استفاده شوند.
-
مثال:
object obj = 25;
Console.WriteLine(obj.ToString()); // خروجی: 25
در اینجا، متد ()ToString از کلاس object فراخوانی شده است که برای تبدیل هر شیء به رشته استفاده میشود.
-
استفاده از object در ساختارهای دادهای
گاهی اوقات، هنگام کار با دادههای نامعلوم یا زمانی که نمیدانیم نوع داده چیست، از object بهعنوان نوع پایه برای ذخیرهسازی استفاده میکنیم.
این کاربرد در ساختارهایی مانند آرایهها، لیستها یا دیکشنریها بسیار رایج است.
مثال:
object[] mixedArray = new object[3];
mixedArray[0] = 42; // int
mixedArray[1] = "Hello"; // string
mixedArray[2] = 3.14; // double
foreach (var item in mixedArray)
{
Console.WriteLine(item); // نمایش هر آیتم
}
در اینجا، از یک آرایه [ ]object برای ذخیره انواع مختلف دادهها استفاده کردهایم، که در این مثال شامل int, string, و double است.
دوره های مرتبط
آموزش برنامه نویسی سی شارپ
زبان شی گرایی حرفه ای سی شارپ یک زبان قدرتمند برای طراحی نرم افزار به شمار میرود.