icon1

خوب البته صحبت ما در مورد Structure ها هنوز تمام نشده اما اجازه بدين ادامه مطلب رو بعد از اينكه كلاس ها رو بيشتر بررسي كرديم داشته باشيم.

نوع هاي در سي شارپ - Reference Type in CSharp
مهم ترين نوع داده اي Reference Type در سي شارپ همان Class يا كلاس ها مي باشند كه تا حدودي در موردشان صحبت كرديم. اما يك نوع داده اي ديگر به نام object وجود دارد كه بايد در موردش صحبت كنيم.

اصولا object خود نيز يك كلاس است اما به جهت اهميتي كه دارد من آن را به صورت جدا از بقيه كلاس ها بررسي مي نمايم. همانطور كه قبلا هم گفتم سي شارپ يك زبان Object Oreinted يا همان شيء گراست و تمامي مفاهيم شيء گرايي در اين زبان رعايت مي شود. يكي از مهمترين مفاهيم شيء گرايي مفهوم Inheritance يا همان توارث مي باشد. توارث در حقيقت به معني به ارث رفتن خصوصيات يك موجود از موجود ديگر مي باشد. و نكته اي كه Inheritance رو به object ربط مي دهد اين است كه object به عنوان base class تمامي كلاس هاي موجود در دات نت فريم ورك مي باشد. به اين معني كه تمامي كلاس هايي كه در دات نت فريم ورك و كلاس هايي كه شما مي نويسيد, همه و همه از كلاس object به ارث رفته اند.

وقتي يك كلاس از يك كلاس ديگر به ارث مي رود تمامي خصوصيات عمومي آن نيز به آن كلاس به ارث مي رود. مثلا اگر من كلاسي به نام Person داشته باشم كه داراي اطلاعات Name و Age و متد Print باشد وقتي كه كلاس Student را از كلاس Person به ارث مي برم خصوصيات عمومي كلاس Person در كلاس Student نيز قابل استفاده مي باشد.

به مثال زير دقت كنيد:



کد:
public class Test{}
با توجه به كدي كه بالا نوشته شده است در اين كلاس هيج موجودي (اعم از Field يا Method و يا ...) وجود ندارد اما اگر از اين كلاس يك شيء بسازيم متوجه مي شويم كه در اين كلاس يك سري متد وجود دارد:


personclass

نكته قابل تامل اينجاست كه اين چهار متد (ToString(), GetHashCode(), GetType(),Equal) همگي در تمام كلاس هايي كه در دات نت يافت مي شود وجود دارد. پس مي توان نتيجه گرفت كه اين متد ها از كلاس object به همه كلاس ها به ارث مي رسند.