۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

نحوه استفاده از کلمات کلیدی in، out و ref در NET Core

از کلمات کلیدی in، out و ref استفاده کنید تا پارامترها را به متدهای C# خود در دات نت منتقل کنید و کد خود را خواناتر و قابل نگهداری تر کنید.

از کلمات کلیدی in، out و ref استفاده کنید تا پارامترها را به متدهای C# خود در دات نت منتقل کنید و کد خود را خواناتر و قابل نگهداری تر کنید.

کلمات کلیدی in، out و ref کلمات کلیدی پرکاربرد در سی شارپ هستند. آنها به ما اجازه می دهند انتزاعات بهتری برای انواع داده ها و روش ها ایجاد کنیم، که به نوبه خود کد ما را خواناتر و قابل نگهداری تر می کند.

هم کلمه کلیدی in و هم کلمه کلیدی out به شما امکان می دهند پارامترها را با مرجع به یک روش منتقل کنید. کلمه کلیدی out به شما امکان می دهد مقادیر پارامترها را تغییر دهید، در حالی که کلمه کلیدی in به شما اجازه تغییر آنها را نمی دهد.

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

در این مقاله، هر یک از این کلمات کلیدی را با جزئیات بیشتری بررسی خواهیم کرد تا بدانید در هنگام کار با سی شارپ چگونه و چه زمانی از آنها استفاده کنید. برای کار با نمونه کدهای ارائه شده در این مقاله، باید Visual Studio 2022 Preview را در سیستم خود نصب کنید. اگر قبلاً نسخه‌ای ندارید، می‌توانید پیش‌نمایش Visual Studio 2022 را از اینجا بارگیری کنید.< /p>

یک پروژه برنامه کاربردی کنسول در ویژوال استودیو ایجاد کنید

ابتدا، اجازه دهید یک پروژه برنامه کاربردی کنسول NET Core در ویژوال استودیو ایجاد کنیم. با فرض اینکه Visual Studio 2022 Preview در سیستم شما نصب شده است، مراحل ذکر شده در زیر را دنبال کنید تا یک پروژه برنامه کاربردی کنسول NET Core جدید در Visual Studio ایجاد کنید.

  1. Visual Studio 2022 Preview IDE را راه اندازی کنید.
  2. روی “ایجاد پروژه جدید” کلیک کنید.
  3. در پنجره “ایجاد پروژه جدید”، “Console App (.NET Core)” را از لیست الگوهای نمایش داده شده انتخاب کنید.
  4. بعدی را کلیک کنید.
  5. در پنجره “پیکربندی پروژه جدید خود” که در ادامه نشان داده شده است، نام و مکان پروژه جدید را مشخص کنید.
  6. بعدی را کلیک کنید
  7. در پنجره “اطلاعات اضافی” نشان داده شده در ادامه، .NET 7 را به عنوان نسخه دات نت که می خواهید استفاده کنید مشخص کنید.
  8. روی ایجاد کلیک کنید.
Pulumi نسخه Business Critical را برای مشتریان سازمانی راه اندازی کرد

این یک پروژه برنامه کاربردی کنسول NET Core 7 جدید در Visual Studio 2022 Preview ایجاد می کند. ما از این پروژه برای کار با کلمات کلیدی in، out و ref در بخش‌های بعدی این مقاله استفاده خواهیم کرد.

کلمه کلیدی ref در سی شارپ

در سی شارپ، ارسال یک شی یا متغیر با مرجع با استفاده از کلمه کلیدی ref انجام می شود. معمولاً وقتی متغیری به یک متد ارسال می‌شود، مقدار متغیر در متد کپی می‌شود تا بتوان در ادامه از آن استفاده کرد.

اما، اگر از ref برای ارسال متغیر با مرجع استفاده کنیم، متغیر در متد کپی نمی‌شود. در عوض، روش برای دسترسی به متغیر اصلی از مرجع پیروی می کند. بنابراین، هر تغییری که روش فراخوانی شده در مقدار متغیر ایجاد کند، به متغیر اصلی انجام می‌شود.

لازم به ذکر است که باید کلمه کلیدی ref را هم در امضای متد و هم در نقطه ای که متد فراخوانی می شود مشخص کنید. کد زیر را در نظر بگیرید:


void RefDemo(ref int refParameter) 
{
    refParameter = refParameter + 1; 
} 
int number = 1; 
RefDemo(ref number); 
Console.WriteLine(number);

وقتی کد قبلی را اجرا می کنید، عدد ۲ در کنسول نمایش داده می شود. این به این دلیل است که متغیری به نام number توسط مرجع ارسال شده است و مقدار refParameter در روش RefDemo ۱ افزایش یافته است.< /p>

6 پروژه مولد AI Python برای اجرا در حال حاضر

قطعه کد زیر نشان می دهد که چگونه می توانید از کلمه کلیدی ref با اشیا استفاده کنید.


void RefDemo(ref int refParameter)
{
    refParameter = refParameter + 1;
}
int number = 1;
RefDemo(ref number);
Console.WriteLine(number);

هنگامی که کد قبلی را اجرا می کنید، متن “Hello World” در کنسول نمایش داده می شود.

در اینجا یک نکته جالب وجود دارد. اگر قطعه کد زیر را اجرا کنید، روش RefDemo درست برمی گردد زیرا مراجع اشیاء str و refParameter یکسان هستند.< /p>


string str = "Hello";
string str = "Hello";
bool RefDemo(ref string refParameter)
{
    refParameter = "Hello World";
    return ReferenceEquals(str, refParameter);
}
bool isEqual = RefDemo(ref str);
Console.WriteLine(isEqual? "The two references are equal":"The two references are not equal");

کلمه کلیدی in در سی شارپ

کلمه کلیدی in در سی شارپ برای تعیین اینکه پارامتر متد توسط مرجع ارسال می شود استفاده می شود، اما متد فراخوانی شده نمی تواند آرگومان را تغییر دهد. این برای پارامترهایی مفید است که توسط متد فراخوانی شده اصلاح نشده‌اند، اما باید توسط مرجع ارسال شوند تا روش فراخوانی به نتایج دسترسی پیدا کند.

شکل ۱ نشان می دهد که نمی توانید مقدار یک پارامتر را تغییر دهید.

در کلمه کلیدی csharp

شکل ۱. خیر! کلمه کلیدی in اجازه تغییر مقادیر پارامتر را نمی دهد.

کلید کلیدی out در سی شارپ

کلمه کلیدی out تقریباً مانند کلمه کلیدی ref کار می کند. این به شما امکان می دهد پارامترها را با استفاده از مراجع ارسال کنید و مقادیر آن پارامترها را نیز تغییر دهید. کلمه کلیدی out با کلمه کلیدی ref یکسان است، با این تفاوت که ref نیاز به مقداردهی اولیه متغیر قبل از ارسال دارد. هنگام کار با کلمه کلیدی out در سی شارپ، هم امضای روش و هم روش فراخوانی باید به صراحت کلمه کلیدی out را مشخص کنند.

OpenAI از مدل‌های تعبیه‌شده جدید، به‌روزرسانی‌های GPT Turbo رونمایی می‌کند

به عنوان مثال، یک روش ممکن است نیاز به بازگرداندن کد موفقیت و مقدار داشته باشد. با استفاده از یک پارامتر خروجی برای متغیر (مثلا retValue)، روش می‌تواند کد موفقیت را مستقیماً برگرداند و از پارامتر خروجی برای مقدار استفاده کند.

قطعه کد زیر نشان می دهد که چگونه می توانید با کلمه کلیدی out در C# کار کنید.


int number;
OutDemo(out number);
Console.WriteLine(number); //The value is now 100
void OutDemo(out int number)
{
    number = 100;
}

هنگامی که کد قبلی را اجرا می کنید، مقدار ۱۰۰ در کنسول نمایش داده می شود.

محدودیت های in، out، و ref

شما نمی‌توانید از کلیدواژه‌های in، out و ref در روش‌های ناهمگام یا روش‌های تکرارکننده استفاده کنید، مانند مواردی که از بازدید بازده یا شکست بازده. علاوه بر این، نمی‌توانید از کلمه کلیدی in در پارامتر اول برای یک روش پسوند استفاده کنید، مگر اینکه پارامتر یک struct باشد.

لازم به ذکر است که کلیدواژه‌های in، ref و out بخشی از امضای روش را هنگام تعیین اضافه‌بار تشکیل نمی‌دهند. از این رو، نمی‌توانید روش‌هایی را که از نظر امضای متفاوت هستند، فقط با توجه به این کلمات کلیدی بارگذاری کنید.

به عبارت دیگر، اگر دو روش با نام یکسان دارید، اما یکی از آنها یک عدد صحیح را به عنوان پارامتر in و دیگری یک عدد صحیح را به عنوان out پارامتر، کد شما اصلا کامپایل نمی شود.