از مزیت is و به عنوان اپراتور در سی شارپ برای انجام عملیات ریخته گری زیبا و نوشتن کدی که به خوبی ساختار یافته، مختصر و قابل نگهداری است استفاده کنید.
عملگرهای is
و as
در C# به شما کمک میکنند تا از استثنائات زمان اجرا اجتناب کنید و در عین حال خوانایی کد خود را افزایش دهید. در حالی که عملگر is
برای تأیید سازگاری بین انواع استفاده می شود، عملگر as
برای ارسال یک شی از یک نوع به نوع دیگر استفاده می شود.
این مقاله استفاده از عملگرهای is
و as
در C# را مورد بحث قرار میدهد و نشان میدهد که چگونه میتوانیم با استفاده از نمونههای کد با آنها کار کنیم. برای کار با نمونه کدهای ارائه شده در این مقاله، باید Visual Studio 2022 را در سیستم خود نصب کنید. اگر قبلاً نسخهای ندارید، میتوانید Visual Studio 2022 را از اینجا بارگیری کنید.
یک پروژه برنامه کاربردی کنسول در ویژوال استودیو ایجاد کنید
ابتدا، اجازه دهید یک پروژه برنامه کاربردی کنسول NET Core در ویژوال استودیو ایجاد کنیم. با فرض اینکه Visual Studio 2022 در سیستم شما نصب شده است، مراحل ذکر شده در زیر را برای ایجاد یک پروژه برنامه کاربردی کنسول NET Core جدید دنبال کنید.
- Visual Studio IDE را راه اندازی کنید.
- روی “ایجاد پروژه جدید” کلیک کنید.
- در پنجره “ایجاد پروژه جدید”، “Console App (.NET Core)” را از لیست الگوهای نمایش داده شده انتخاب کنید.
- بعدی را کلیک کنید.
- در پنجره “پیکربندی پروژه جدید خود”، نام و مکان پروژه جدید را مشخص کنید.
- بعدی را کلیک کنید.
- در پنجره «اطلاعات اضافی»، «NET 7.0 (Standard Term Support)» را به عنوان نسخه چارچوبی که میخواهید استفاده کنید، انتخاب کنید.
- روی ایجاد کلیک کنید.
ما از این پروژه برنامه کاربردی کنسول NET 7 برای کار با اپراتورهای is
و as
در بخشهای بعدی این مقاله استفاده خواهیم کرد.
اپراتورها در سی شارپ چیست؟
عملگر یک کلمه کلیدی است که روی یک عملوند کار می کند. یک عملوند می تواند یک مقدار یا یک ثابت باشد. زبان برنامه نویسی سی شارپ شامل عملگرهای زیادی است که به شما در ارزیابی عبارات کمک می کنند.
این عملگرها به سه دسته دسته بندی می شوند: عملگرهای تکی، باینری و سه تایی. همانطور که از نام آن پیداست، عملگر یکنواختی عملگرهایی است که فقط روی یک عملوند کار می کنند. یک عملگر باینری به دو عملوند نیاز دارد و یک عملگر سه تایی بر اساس یک شرط کار می کند.
نمونههای معمولی از عملگر یکنواخت عبارتند از: پیش افزایش (++x
)، پس از افزایش (x++
)، پیش کاهش (-- x
)، و عملگرهای پس از کاهش (x--
). نمونههای معمول عملگرهای باینری عبارتند از عملگرهای حسابی +
، -
، *
، /
و %
.
از یک عملگر سه تایی برای تعریف یک شرط بولی استفاده می شود. اولین عبارت بعد از ؟
در صورت صحیح بودن شرط ارزیابی می شود. در غیر این صورت دستور بعدی اجرا می شود. اساسا، یک عملگر سه تایی روش کوتاه تری برای نوشتن دستور if-else به شما می دهد.
چندین نوع عملگر دیگر مانند عملگرهای بیتی، عملگرهای برابری، عملگرهای انتساب و عملگرهای تبدیل تعریف شده توسط کاربر وجود دارد. در مستندات مایکروسافت اینجا< /a>.
استفاده از عملگر is در سی شارپ
عملگر is
در زبان برنامه نویسی C# برای بررسی سازگاری نوع زمان اجرا یک شی با یک نوع مشخص استفاده می شود. اگر سازگار باشد، عبارت به درستی و در غیر این صورت نادرست ارزیابی می شود.
در اینجا ویژگی های عملگر is
در سی شارپ آمده است:
- عملگر
is
برای بررسی اینکه آیا نوع زمان اجرا نتیجه عبارت با یک نوع معین سازگار است یا خیر استفاده میشود. - وقتی از عملگر
is
استفاده میشود، اگر انواع یکسان باشند، عبارت یا درست ارزیابی میشود یا اگر انواع متفاوت باشد، نادرست است. - اپراتور
is
فقط برای تبدیل جعبه، جعبهگشایی و تبدیل مرجع استفاده میشود.
توجه داشته باشید که اپراتور is
هیچ استثنایی را در صورت عدم سازگاری نوع ایجاد نخواهد کرد. اجازه دهید این را با یک مثال کد بفهمیم. کلاس های C# زیر را در نظر بگیرید.
public class Person { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Address { get; set; } public string City { get; set; } public string PostalCode { get; set; } public string Country { get; set; } public string Phone { get; set; } } public class Author: Person { public int Id { get; set; } public List<Book> Books { get; set; } } public class Book { public int Id { get; set; } public string Title { get; set; } public string Description { get; set; } public string ISBN { get; set; } } public class Employee: Person { public int Id { get; set; } public string Department { get; set; } public double Basic { get; set; } public double Allowance { get; set; } public double Tax { get; set; } public double NetSalary { get; set; } }
اکنون، اگر کد زیر را برای انجام یک فرستادن صریح بنویسید، با خطایی مواجه میشوید که میگوید «نمیتوان نوع «نویسنده» را به نوع «کارمند» تبدیل کرد.
var author = new Author(); var employee = (Employee)author;
اکنون، کد زیر را در فایل Program.cs بنویسید تا سازگاری انواع را با استفاده از عملگر is
بررسی کنید.
bool checkCompatibilityAuthor = (author is Author); bool checkCompatibilityEmployee = (employee is Author);
هنگامی که برنامه را اجرا می کنید، خواهید دید که عبارت اول به true و دومی به false ارزیابی می شود. با این حال، هیچ استثنایی وجود نخواهد داشت، یعنی هیچ خطای زمان کامپایل یا زمان اجرا وجود ندارد.
استفاده از عملگر as در سی شارپ
عملگر as
در سی شارپ به شما این امکان را میدهد که به صراحت نتیجه یک عبارت را به یک نوع مرجع معین یا یک نوع مقدار قابل تهی تبدیل کنید. اگر تبدیل ممکن نباشد، as
پوچ برمیگرداند.
در اینجا ویژگی های عملگر as
در سی شارپ آمده است:
- عملگر
as
زمانی استفاده میشود که شما نیاز به تبدیل انواع مرجع سازگار از انواع nullable دارید. - وقتی عملگر
as
استفاده میشود، عبارت سمت راست عملگر تخصیص به مقدار بولی ارزیابی نمیشود. - هنگامی که عملگر
as
استفاده میشود، در صورت سازگاری اشیا، عبارت شیء را برمیگرداند و در صورت عدم امکان تبدیل، null را برمیگرداند. - میتوانید از عملگر
as
فقط برای تبدیلهای باکس، مرجع و باطل استفاده کنید.
قطعه کد زیر نشان می دهد که چگونه می توان از عملگر as
در C# استفاده کرد.
var obj = new Author(); var person = obj as Person;
شئ با نام person اکنون از نوع Person خواهد بود اما به نمونه obj کلاس Author اشاره می کند.
زمان استفاده از آن است و به عنوان
عملگر is
به شما کمک می کند تا مقادیر تهی را با استفاده از کدهای قابل خواندن توسط انسان بررسی کنید. عملگر as
همچنین به شما کمک می کند تا مقادیر null را بررسی کنید، اما به جای برگرداندن true یا false، یک نوع سازگار یا null را برمی گرداند. به یاد داشته باشید، بررسی منابع تهی از نظر سربار منابع بسیار کمتر از نوشتن بلوک های استثنایی و قرار دادن استثناها در کد شما است.
عملگرهای is
و as
روش خوبی برای مقابله با ریختهگری اشیا ارائه میدهند. مهمتر از همه، اگر تبدیل ها با شکست مواجه شوند، با خطاهای زمان کامپایل یا زمان اجرا مواجه نخواهید شد. با این حال، من به شما توصیه میکنم از تعداد زیادی از بازیگران در یک برنامه استفاده نکنید، زیرا بازیگران به دلیل سربار بوکس و جعبهگشایی برای عملکرد مضر هستند.
پست های مرتبط
نحوه استفاده از عملگر is و به عنوان در سی شارپ
نحوه استفاده از عملگر is و به عنوان در سی شارپ
نحوه استفاده از عملگر is و به عنوان در سی شارپ