
```
WEBVTT

00:00.110 --> 00:01.100
 خوش آمدید.

00:01.100 --> 00:09.020
در این ویدیو، می‌خواهم به شما نشان دهم که چرا هر کلاس در C# از کلاس شیء (object) ارث بری می‌کند.

00:09.140 --> 00:11.330
پس این به چه معناست؟

00:11.360 --> 00:17.090
خب، بیایید از مثال قبلی که داشتیم استفاده کنیم، جایی که مدیر، کارل و غیره را داشتیم.

00:17.090 --> 00:23.390
حالا واقعاً مهم نیست که بر روی کدام شیء این را اعمال می‌کنید، اما کارل یک شیء است که من در حال حاضر دارم.

00:23.390 --> 00:24.860
حالا می‌بینید که چند متد وجود دارد که خودم هرگز ایجاد نکرده‌ام، مانند توی رشته (ToString) یا دریافت نوع (GetType) یا

00:34.010 --> 00:36.170
دریافت کد هش (GetHashCode) یا برابر (Equals).

00:36.170 --> 00:42.950
پس همه اینها متدهایی هستند که در کلاس شیء وجود دارند.

00:42.950 --> 00:49.670
پس اینجا می‌بینید که bool object equals مشخص می‌کند که آیا شیء مشخص شده برابر با شیء فعلی است.

00:49.670 --> 00:57.050
بنابراین این برای مقایسه دو شیء با یکدیگر است و اگر این‌طور باشد، true را برمی‌گرداند یا

00:57.050 --> 00:58.430
اگر نبود، false.

00:58.430 --> 01:03.530
بنابراین گاهی اوقات شما فقط می‌خواهید دو شیء را با یکدیگر مقایسه کنید و ببینید آیا یکسان هستند.

01:03.530 --> 01:07.250
اما بیشتر اوقات اینطور نخواهد بود، مگر اینکه واقعاً همان شیء را داشته باشید.

01:07.250 --> 01:13.700
بنابراین ممکن است که شما دو فهرست داشته باشید و همان شیء در هر دو فهرست باشد و شما بخواهید

01:13.700 --> 01:17.180
دو فهرست را با یکدیگر مقایسه کنید و ببینید آیا تکراری وجود دارد یا نه.

01:17.180 --> 01:19.610
پس این می‌تواند چیزی باشد که شما می‌توانید انجام دهید.

01:19.610 --> 01:21.830
سپس این توی رشته (ToString) وجود دارد.

01:21.830 --> 01:25.400
این ساده‌ترین آن است و من معتقدم که ما قبلاً از آن استفاده کرده‌ایم.

01:25.400 --> 01:30.350
پس آنچه این کار می‌کند، بازگرداندن یک رشته است که نمایانگر شیء فعلی است.

01:30.350 --> 01:35.090
پس بیایید واقعاً توی رشته (ToString) را نمایش دهیم.

01:35.090 --> 01:38.480
و بگذارید واقعاً این نمایش اطلاعات مدیر را کنار بگذارم.

01:38.480 --> 01:41.840
من واقعاً فقط می‌خواهم درباره رشته کارل بدانم.

01:41.840 --> 01:45.110
پس بیایید این را اجرا کنیم و ببینیم خوب.

01:45.110 --> 01:47.540
سازنده شخص فراخوانی شده، سازنده کارمند فراخوانی شده است.

01:47.540 --> 01:48.200
خوب است.

01:48.200 --> 01:51.800
و سپس می‌بینیم که inheritance app .manager.

01:51.800 --> 01:56.090
پس این تمام اطلاعاتی است که از این متد توی رشته (ToString) دریافت می‌کنیم.

01:56.090 --> 02:01.370
حالا چه اتفاقی برای توی رشته (ToString) می‌افتد یا این کلاس شیء (Object) چه چیزی است؟

02:01.370 --> 02:03.290
بیایید به توی رشته (ToString) برویم.

02:03.290 --> 02:05.450
می‌توانید کلید کنترل را نگه دارید.

02:05.450 --> 02:08.150
و این شما را به این کلاس شیء (Object) می‌برد.

02:08.150 --> 02:09.860
و می‌توانید اینجا بالا را اسکرول کنید.

02:09.860 --> 02:12.320
می‌توانید ببینید که در فضای نام (Namespace) سیستم است.

02:12.320 --> 02:14.330
این یک سری اصلاحات دارد.

02:14.330 --> 02:15.860
پس قابل سریال‌سازی است.

02:15.860 --> 02:19.220
این یک کلاس و رابط و غیره است، یک سری چیزهای واقعاً پیشرفته.

02:19.220 --> 02:26.660
اما آنچه برای ما اهمیت دارد این است که می‌بینید که این یک کلاس است و نامش شیء است.

02:26.660 --> 02:28.460
حالا این یک کلاس جزئی است.

02:28.460 --> 02:30.830
ما بعداً خواهیم دید که کلاس‌های جزئی چیست.

02:30.830 --> 02:35.780
اما در حال حاضر می‌بینید که این یک کلاس به نام شیء است.

02:35.870 --> 02:38.420
می‌توانید ببینید که یک سازنده دارد.

02:38.420 --> 02:41.900
سپس دوباره دارای یادداشت‌هایی مانند این حاشیه‌نویسی‌ها است.

02:41.930 --> 02:44.060
بیایید نگران آن‌ها نباشیم.

02:44.060 --> 02:48.110
پس می‌بینیم که این متد توی رشته (ToString) وجود دارد که از آن استفاده کردیم.

02:48.110 --> 02:51.050
و نوع توی رشته (ToString) را باز می‌گرداند.

02:51.050 --> 02:56.990
حالا مراجعه به دریافت نوع (GetType) ممکن است در این نقطه از ویدیو یا دوره کمی بیش از حد باشد، اما

02:56.990 --> 03:02.510
من فکر می‌کنم که ما با تنها درک این که نوع را دریافت می‌کند و آن را به رشته تبدیل می‌کند، خوب هستیم.

03:02.510 --> 03:03.980
یا به عبارت دیگر، آن را به رشته تبدیل می‌کند.

03:03.980 --> 03:10.340
و سپس ما این متد به نام برابر (Equals) داریم که به ما اجازه می‌دهد دو شیء را مقایسه کنیم.

03:10.340 --> 03:14.480
پس فقط می‌گوید آیا شیء‌ای که به این متد برابر (Equals) پاس می‌دهیم.

03:14.480 --> 03:19.880
آیا همانند این شیء است که خود این متد را فراخوانی می‌کند؟

03:19.880 --> 03:20.420
خوب.

03:20.420 --> 03:22.460
پس این کاری است که این متد برابر (Equals) انجام می‌دهد.

03:22.460 --> 03:24.410
این زمانی است که شما با یک شیء این کار را انجام می‌دهید.

03:24.410 --> 03:28.760
اما اگر دو شیء را با یکدیگر مقایسه کنید، می‌توانید بیشتر از این‌ها را پاس دهید.

03:28.760 --> 03:32.870
می‌بینید که اگر دو عدد را پاس دهید، این همان کاری است که این متد برابر (Equals) انجام می‌دهد.

03:32.870 --> 03:37.400
سپس این متد مرجع برابر (Reference Equals) و متد دریافت کد هش (GetHashCode) وجود دارد.

03:37.400 --> 03:40.520
پس می‌بینید که چندین متد وجود دارد که هر کدام کارهای مختلفی انجام می‌دهند.

03:40.520 --> 03:43.640
شما می‌توانید به راحتی توضیحات را بخوانید و درک بهتری پیدا کنید.

03:43.640 --> 03:47.090
اما این دریافت کد هش (GetHashCode) به عنوان یک تابع هش پیش‌فرض عمل می‌کند.

03:47.090 --> 03:50.330
این کد هش را برای شیء فعلی باز می‌گرداند.

03:50.330 --> 03:56.240
پس دریافت کد هش (GetHashCode) برای این شیء بر اساس محتوای شیء طراحی شده است.

03:56.240 --> 03:56.840
این تابع هش یک مقدار مناسب را با توزیع نسبتاً تصادفی بر روی ورودی‌های مختلف باز می‌گرداند.

03:56.840 --> 04:03.740
پس این به ما اجازه می‌دهد که یک کد هش تصادفی ایجاد کنیم، به اصطلاح، که سپس این شیء را

04:03.740 --> 04:10.700
منحصر به فرد می‌کند، به معنای اینکه هر شیء کد هش خاص خود را دریافت می‌کند.

04:10.700 --> 04:15.620
و با کد هش می‌توانید آن‌ها را با یکدیگر مقایسه کنید و می‌توانید متوجه شوید که آیا آن‌ها

04:15.620 --> 04:20.660
همان شیء هستند یا نه.

04:20.660 --> 04:21.740
پس این واقعاً چیز خوبی است.

04:21.740 --> 04:23.660
و نمی‌خواهم خیلی عمیق‌تر بروم، چون می‌بینید که هنوز

04:23.660 --> 04:29.000
یک سری کلمات کلیدی دیگر وجود دارد که ما هنوز پوشش نداده‌ایم و آن هم واقعاً دور خواهد شد.

04:29.000 --> 04:32.210
اما فقط می‌خواستم به شما نشان دهم که همین‌طور است و هر کلاس در C# از کلاس شیء ارث بری می‌کند

04:32.210 --> 04:41.210
که به ما این امکان را می‌دهد که از متدهایی مانند توی رشته (ToString) روی کلاسی که خودمان ایجاد کرده‌ایم یا

04:41.210 --> 04:51.560
روی شیء‌ای که کلاس آن را ایجاد کرده‌ایم، استفاده کنیم بدون اینکه این متد را پیاده‌سازی کرده باشیم.

04:51.560 --> 04:57.200
خوب، پس همین است.

04:57.200 --> 04:59.840
برای این ویدیو و می‌خواهم بگویم که کمی این را بررسی کنید اگر می‌خواهید عمیق‌تر غوطه‌ور شوید،

04:59.840 --> 05:06.760
اما خیلی پیش نروید زیرا این یک تله خوب است که می‌توانید در آن بیفتید.

05:06.760 --> 05:10.480
و من معتقدم که ما هنوز در این مرحله از دوره آماده نیستیم.

05:10.480 --> 05:14.080
پس در ویدیوی بعدی شما را می‌بینم.
```
