Anonymous Type و Nullable Type در #C
شناسه پست: 2132
بازدید: 780

در این مقاله، ما در مورد کلاسهای anonymous، نحوه ایجاد آنها و دلیل مفید بودن آنها صحبت میکنیم. علاوه بر این، در مورد nullable type ها و نحوه استفاده از آنها با value type ها و اینکه چه ویژگیهایی با nullable type ها در اختیار ما قرار میگیرد صحبت میکنیم.

این مقاله، سرفصلی از دوره آموزشی زیر میباشد:

اگر می خواهید محتویات کامل این دوره را ببینید ، می توانید بر روی لینک سطح متوسطه #C کلیک کنید.

برای دانلود سورس، روی لینک سورس Anonymous Type ها و Nullable Type ها در #c کلیک کنید.

ما این مقاله را به قسمتهای زیر تقسیم میکنیم:

کلاسهای Anonymous

یک کلاس anonymous کلاسی است که نام ندارد. این به نظر عجیب می رسد اما گاهی اوقات یک کلاس anonymous می تواند مفید باشد ، به خصوص هنگام استفاده از query expression ها.

بیایید ببینیم که منظور ما از این حرف چیست.

ما میتوانیم به طور ساده با استفاده از کلمه new قبل از بریس باز و بسته، یک آبجکت از کلاس anonymous ایجاد کنیم:

این آبجکت شامل دو ویژگی Name و Age است. کامپایلر به طور ضمنی، نوع ها را بر اساس نوعهای مقادیر آنها به ویژگیها اختصاص می دهد. بنابراین معنی این اساساً این است که ویژگی Name از نوع string و ویژگی Age از نوع int خواهد بود.

اما اکنون می توانیم بپرسیم myAnonymousObj از چه نوعی است؟ و پاسخ این است که ما نمی دانیم که اینجا، کدام قسمت به کلاس های anonymous اشاره میکند. اما این در #C مسئله ای نیست. ما میتوانیم آبجکتمان را با استفاده از کلمه کلیدی var به عنوان یک متغیر نوع ضمنی تعریف کنیم:

کلمه var باعث میشود که کامپایلر یک متغیر از نوع همان expression که ما برای مقداردهی آن آبجکت استفاده میکنیم ایجاد کند. پس اجازه بدید تا چند مثال از نوعهای شناخته شده را ببینیم:

ما میتوانیم به ویژگیهای آبجکت anonymous به همان روشی که با آبجکتهای شناخته شده کار میکردیم دسترسی داشته باشیم:

Nullable Type ها

مقدار null برای مقداردهی اولیه reference type ها مفید است. بنابراین منطقی است که مقدار null را به value type اختصاص ندهیم، زیرا null خودش یک reference است.

همانطور که گفته شد، می توانیم ببینیم که عبارت زیر خطا ایجاد می کند:

خطای nullable در #c

با این حال، #C یک modifier در اختیار ما میگذارد تا بتوانیم یک value type را از نوع null پذیر تعریف کنیم. برای این کار، ما میتوانیم از علامت ? برای تعیین اینکه value type یک نوع null پذیر است استفاده کنیم:

در این حالت، ما همچنان میتوانیم یک مقدار integer را به nullable value type مان تخصیص دهیم:

این حالت در کل معتبر است. اما اگر بخواهیم مقدار نوع nullable مان را به متغیری از نوع  int تخصیص دهیم به مشکل برخواهیم خورد:

خب این مشکل منطقی است. چرا که ما اینجا این را لحاظ کردیم که متغیر number ممکن است شامل null باشد در صورتی که متغیر another اصلا نمیتواند مقدار null بپذیرد.

ویژگیهای Nullable Type ها

nullable type ها چند ویژگی را در اختیار ما میگذارد که در حین کار بر روی پروژه میتواند برای ما مفید باشد. ویژگی HasValue که تعیین میکند که آیا nullable type شامل یک مقدار است یا اینکه null است. ویژگی Value در صورتی که نوع nullable ما درونش null نباشد مقدار درون آن را به ما میدهد:

نتیجه گیری

در این مقاله ما یاد گرفتیم:

  • نحوه استفاده از کلاسهای anonymous
  • nullable type ها چه چیزهایی هستند
  • در مورد ویژگیهای nullable type ها

در مقاله بعدی، در مورد ساختارها در #C صحبت میکنیم.

نویسنده

امید عباسی
من امید عباسی هستم. سالهاست که در زمینه برنامه نویسی با تکنولوژی دات نت فعالیت میکنم و عاشق این هستم که تجربیات و دانش خودم را در این زمینه با دیگران به اشتراک بزارم. خیلی دوست دارم که نظر و انتقاد خودتون رو در مورد این نوشته برای من بنویسید تا بتونم در آینده، مطالب بهتر و ارزشمندتری را برای شما فراهم کنم. در صورت داشتن هرگونه سوال هم در قسمت دیدگاه ها میتونید با بنده در ارتباط باشید