خوش آمدید.
در این ویدیو، می‌خواهم به شما نشان دهم که چرا هر کلاس در C# از کلاس شیء (object) ارث بری می‌کند.
پس این به چه معناست؟
خب، بیایید از مثال قبلی که داشتیم استفاده کنیم، جایی که مدیر، کارل و غیره را داشتیم.
حالا واقعاً مهم نیست که بر روی کدام شیء این را اعمال می‌کنید، اما کارل یک شیء است که من در حال حاضر دارم.
حالا می‌بینید که چند متد وجود دارد که خودم هرگز ایجاد نکرده‌ام، مانند توی رشته (ToString) یا دریافت نوع (GetType) یا
دریافت کد هش (GetHashCode) یا برابر (Equals).
پس همه اینها متدهایی هستند که در کلاس شیء وجود دارند.
پس اینجا می‌بینید که bool object equals مشخص می‌کند که آیا شیء مشخص شده برابر با شیء فعلی است.
بنابراین این برای مقایسه دو شیء با یکدیگر است و اگر این‌طور باشد، true را برمی‌گرداند یا
اگر نبود، false.
بنابراین گاهی اوقات شما فقط می‌خواهید دو شیء را با یکدیگر مقایسه کنید و ببینید آیا یکسان هستند.
اما بیشتر اوقات اینطور نخواهد بود، مگر اینکه واقعاً همان شیء را داشته باشید.
بنابراین ممکن است که شما دو فهرست داشته باشید و همان شیء در هر دو فهرست باشد و شما بخواهید
دو فهرست را با یکدیگر مقایسه کنید و ببینید آیا تکراری وجود دارد یا نه.
پس این می‌تواند چیزی باشد که شما می‌توانید انجام دهید.
سپس این توی رشته (ToString) وجود دارد.
این ساده‌ترین آن است و من معتقدم که ما قبلاً از آن استفاده کرده‌ایم.
پس آنچه این کار می‌کند، بازگرداندن یک رشته است که نمایانگر شیء فعلی است.
پس بیایید واقعاً توی رشته (ToString) را نمایش دهیم.
و بگذارید واقعاً این نمایش اطلاعات مدیر را کنار بگذارم.
من واقعاً فقط می‌خواهم درباره رشته کارل بدانم.
پس بیایید این را اجرا کنیم و ببینیم خوب.
سازنده شخص فراخوانی شده، سازنده کارمند فراخوانی شده است.
خوب است.
و سپس می‌بینیم که inheritance app .manager.
پس این تمام اطلاعاتی است که از این متد توی رشته (ToString) دریافت می‌کنیم.
حالا چه اتفاقی برای توی رشته (ToString) می‌افتد یا این کلاس شیء (Object) چه چیزی است؟
بیایید به توی رشته (ToString) برویم.
می‌توانید کلید کنترل را نگه دارید.
و این شما را به این کلاس شیء (Object) می‌برد.
و می‌توانید اینجا بالا را اسکرول کنید.
می‌توانید ببینید که در فضای نام (Namespace) سیستم است.
این یک سری اصلاحات دارد.
پس قابل سریال‌سازی است.
این یک کلاس و رابط و غیره است، یک سری چیزهای واقعاً پیشرفته.
اما آنچه برای ما اهمیت دارد این است که می‌بینید که این یک کلاس است و نامش شیء است.
حالا این یک کلاس جزئی است.
ما بعداً خواهیم دید که کلاس‌های جزئی چیست.
اما در حال حاضر می‌بینید که این یک کلاس به نام شیء است.
می‌توانید ببینید که یک سازنده دارد.
سپس دوباره دارای یادداشت‌هایی مانند این حاشیه‌نویسی‌ها است.
بیایید نگران آن‌ها نباشیم.
پس می‌بینیم که این متد توی رشته (ToString) وجود دارد که از آن استفاده کردیم.
و نوع توی رشته (ToString) را باز می‌گرداند.
حالا مراجعه به دریافت نوع (GetType) ممکن است در این نقطه از ویدیو یا دوره کمی بیش از حد باشد، اما
من فکر می‌کنم که ما با تنها درک این که نوع را دریافت می‌کند و آن را به رشته تبدیل می‌کند، خوب هستیم.
یا به عبارت دیگر، آن را به رشته تبدیل می‌کند.
و سپس ما این متد به نام برابر (Equals) داریم که به ما اجازه می‌دهد دو شیء را مقایسه کنیم.
پس فقط می‌گوید آیا شیء‌ای که به این متد برابر (Equals) پاس می‌دهیم.
آیا همانند این شیء است که خود این متد را فراخوانی می‌کند؟
خوب.
پس این کاری است که این متد برابر (Equals) انجام می‌دهد.
این زمانی است که شما با یک شیء این کار را انجام می‌دهید.
اما اگر دو شیء را با یکدیگر مقایسه کنید، می‌توانید بیشتر از این‌ها را پاس دهید.
می‌بینید که اگر دو عدد را پاس دهید، این همان کاری است که این متد برابر (Equals) انجام می‌دهد.
سپس این متد مرجع برابر (Reference Equals) و متد دریافت کد هش (GetHashCode) وجود دارد.
پس می‌بینید که چندین متد وجود دارد که هر کدام کارهای مختلفی انجام می‌دهند.
شما می‌توانید به راحتی توضیحات را بخوانید و درک بهتری پیدا کنید.
اما این دریافت کد هش (GetHashCode) به عنوان یک تابع هش پیش‌فرض عمل می‌کند.
این کد هش را برای شیء فعلی باز می‌گرداند.
پس دریافت کد هش (GetHashCode) برای این شیء بر اساس محتوای شیء طراحی شده است.
این تابع هش یک مقدار مناسب را با توزیع نسبتاً تصادفی بر روی ورودی‌های مختلف باز می‌گرداند.
پس این به ما اجازه می‌دهد که یک کد هش تصادفی ایجاد کنیم، به اصطلاح، که سپس این شیء را
منحصر به فرد می‌کند، به معنای اینکه هر شیء کد هش خاص خود را دریافت می‌کند.
و با کد هش می‌توانید آن‌ها را با یکدیگر مقایسه کنید و می‌توانید متوجه شوید که آیا آن‌ها
همان شیء هستند یا نه.
پس این واقعاً چیز خوبی است.
و نمی‌خواهم خیلی عمیق‌تر بروم، چون می‌بینید که هنوز
یک سری کلمات کلیدی دیگر وجود دارد که ما هنوز پوشش نداده‌ایم و آن هم واقعاً دور خواهد شد.
اما فقط می‌خواستم به شما نشان دهم که همین‌طور است و هر کلاس در C# از کلاس شیء ارث بری می‌کند
که به ما این امکان را می‌دهد که از متدهایی مانند توی رشته (ToString) روی کلاسی که خودمان ایجاد کرده‌ایم یا
روی شیء‌ای که کلاس آن را ایجاد کرده‌ایم، استفاده کنیم بدون اینکه این متد را پیاده‌سازی کرده باشیم.
خوب، پس همین است.
برای این ویدیو و می‌خواهم بگویم که کمی این را بررسی کنید اگر می‌خواهید عمیق‌تر غوطه‌ور شوید،
اما خیلی پیش نروید زیرا این یک تله خوب است که می‌توانید در آن بیفتید.
و من معتقدم که ما هنوز در این مرحله از دوره آماده نیستیم.
پس در ویدیوی بعدی شما را می‌بینم. ```