#csharp_for_beginners
در سیشارپ، زمانی که متغیری را با استفاده از کلیدواژه var تعریف میکنید، نیازی به مشخص کردن نوع آن ندارید؛ زیرا کامپایلر نوع مناسب را از بند عبارت سمت راست تشخیص میدهد.
نوع ممکن است جزئی از انواع داخلی مثل int یا string باشد، یا حتی انواع ناشناس (anonymous types) یا انواع تعریفشده توسط کاربر یا کتابخانههای داتنت.
نمونههای کاربردی
مثالهایی از تعریف متغیرهای ضمنی با var:
var i = 5; // نوع int
var s = "Hello"; // نوع string
var a = new[] { 0, 1, 2 }; // نوع int[]
var expr = from c in customers where c.City == "London" select c; // IEnumerable<Customer> یا IQueryable<Customer>
var anon = new { Name = "Terry", Age = 34 }; // نوع ناشناس
var list = new List<int>(); // List<int>
محدودیتها و قوانین استفاده
-ابتدا باید مقداردهی شود: var فقط در صورتی کاربرد دارد که متغیر در همان خط تعریف، مقداردهی شده باشد. تعریف بدون مقدار (var x;) یا مقداردهی به null، باعث خطا میشود.
-قابل استفاده فقط در سطح محلی: نمیتوان از var برای تعریف فیلدهای سطح کلاس، پارامترهای متد یا نوع بازگشتی متد استفاده کرد.
تعریف همزمان چند متغیر با
var امکانپذیر نیست، نظیر: var a = 1, b = 2; باعث خطا میشود.-نوع متغیر در طول زمان تغییر نمیکند: نوعی که کامپایلر تشخیص میدهد ثابت است.
کاربرد در LINQ و انواع ناشناس
در بسیاری از موارد استفاده از var اختیاری است؛ اما زمانی که نوع ناشناس بهکار رفته، استفاده از var الزامی است، زیرا نوع ناشناس نام مشخصی ندارد:
var studentQuery = from student in students
where student.FirstName[0] == firstLetter
select new { student.FirstName, student.LastName };
foreach (var anonType in studentQuery)
{
Console.WriteLine($"First = {anonType.FirstName}, Last = {anonType.LastName}");
}
بدون
var، امکان دسترسی به خواص این نوعها وجود ندارد.چه زمانی بهتر است یا بهتر نیست از var استفاده شود؟
استفاده از var خوانایی کد را بیشتر میکند، بهویژه در مواردی که نوع پیچیدهای پشت مقدار است (مثلاً Dictionary<string, List<int>>).
در اسناد رسمی مایکروسافت توصیه میشود از
var فقط زمانی استفاده کنید که نوع از مقدار سمت راست بهوضوح مشخص باشد. یعنی اگر از خواننده انتظار دارید نوع را تشخیص دهد، فقط در آن صورت از var استفاده کنید.یکی از ابزارهای IDE (مثل Visual Studio) امکان تبدیل
var به نوع صریح (explicit type) را برای خوانایی بیشتر فراهم کرده است؛ البته در شرایطی که مقدار در همان خط تعریف نشده یا نوع ناشناس نیست.🔗 مطلب کامل را در این لینک میتوانید مطالعه کنید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
کانال تلگرام:
@SoftwarePhilosophy
______