<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های محمد مهدی علیپور</title><link>https://virgool.ir/feed/@Dorin</link><description></description><language>fa</language><pubDate>2026-11-11 01:06:44</pubDate><image><url>https://files.virgool.ir/upload/users/2314777/avatar/w6pYa4.jpg</url><title>محمد مهدی علیپور</title><link>https://virgool.ir/@Dorin</link></image><item><title>چگونگی استفاده از ref و out در سی شارپ به زبان ساده + مثال کاربردی</title><link>https://virgool.ir/@Dorin/چگونگی-استفاده-از-ref-و-out-در-سی-شارپ-به-زبان-ساده-مثال-کاربردی-q35d6uisfdhr</link><description>اموزش استفاده از ref   و out در سی شارپشاید برای شما هم پیش آمده باشد که هنگام برسی کد های دیگران یا کد هایی که در آموزش ها برسی میشوند ref و out را زیاد شنیده باشید.در مطلب امروز به برسی کامل ref , out در زبان سی شارپ میپردازیم.فرض کنید یک متغیر با نام num داریم و میخواهیم num را مقداردهی کنیم ، روش های مختلفی برای مقدار دهی وجود دارد.برای شروع بیاید با کد زیر پیش برویم??‍?روش اول برای مقدار دهی یک متغیر (برای مثال string)        string num = &#34;ali&#34;;روش بعدی میتونه این شکلی باشه        string num;        num = &#34;ali&#34;;روش بعدی مقدار دهی متغیر با استفاده از یک متد میباشد.    public static string Test()    { return &#34;ali&#34;;    }خروجی متد ما از جنس رشته(string) میباشد، به این معنا که میتوان num را با متدی که بالا نوشتیم به شکل زیر مقدار دهی کنیم. string num = Test();شروع کار با ref , out در کد های سی شارپمقدار دهی یک متغیر در زبان سی شارپ به روش های مختلفی انجام میشود اما شاید مقدار بازگشتی متد ما با نوع متغیر یکی نباشد، شاید متد ما مقدار بازگشتی true یا false را برمیگرداند.مثلا کد زیر را در نظر بگیریدstatic void Main(){    string name;     Test();}public static void Test(){}زمانی که بخواهیم از طریق ورودی یک متد مقدار یک متغیر را تغییر دهیم میتوانیم از ref , out استفاده کنیمنوشتن یک کد مثال با ref    static void Main()    {        string name = &#34;arman&#34;;  value is Ali Test(ref name);    }    public static void Test(ref string name)    { name = &#34;ali&#34;;    }مقدارname برابر با ali میشود چرا که ما ورودی متد Test را طوری تعریف کردیم که مستقیم مقدار name را تغیر دهد، به عبارتی ما یک ارتباط مستقیم بین ورودی متد و مقدار متغیر ایجاد کردیم.برای درک بهتر این کد را کپی و اجرا کنیدpublic class Program{    static void Main()    {        string name = &#34;arman&#34;;        Test(ref name);    }    public static void Test(ref string name)    {        name = &#34;ali&#34;;    }}پارامتر های ref و out هر دو مثل یک دیگر عمل میکنند اما یک تفاوت بزرگ بین آنها وجود داردبه کد زیر کمی نگاه کنید و آن را برای خود اجرا کنید.public class Program {     static void Main()     {         string name = &#34;arman&#34;;  Test(out name);     }     public static void Test(out string name)     {         name = &#34;ali&#34;;      } }خروجی کد بالا با خروجی کد قبلی یکسان خواهد بود ، پس چه تفاوتی بین این دو پارامتر وجود دارد؟زمانی که با out پارمتری را به متد پاس میدهیم باید آن را یک بار داخل متد هم مقدار دهی کنیمدر غیر این صورت با خطا مواجه میشویم.درست مثل تصویر پایین?در چه صورتی خطا درست میشود؟زمانی که name را داخل متد مقداردهی کردیم خطا رفع شد.در واقع زمانی از out استفاده میکنیم که میخواهیم مطمئن شویم مقدار ورودی را مجدد مقدار دهی میکنیم.البته در برخی کد های دیگر هم کاربرد دارد که جای ذکر آن در این مطلب نیست.در اینجا تمام تلاش خودم رو کردم تا بهتون کاربرد ref و out را توضیح بدم امیدوارم لذت برده باشید!</description><category>محمد مهدی علیپور</category><author>محمد مهدی علیپور</author><pubDate>Wed, 22 Mar 2023 17:35:09 +0330</pubDate></item><item><title>نحوه نوشتن شرط یک خطی در سی شارپ + مثال</title><link>https://virgool.ir/@Dorin/نحوه-نوشتن-شرط-یک-خطی-در-سی-شارپ-مثال-li4guwux57e3</link><description>نوشتن شرط در زبان های برنامه نویسی سطح بالا و مدرن شباهت زیادی با یکدیگر دارد اما در این مطلب به برسی چگونگی نوشتن شرط یا همان if و else در یک خط میپردازیم.در حالت عادی کد را به شکل زیر مینویسیم،(محیط کنسول)int a = 1 ,b =1;if(a == b) {    Console.WriteLine(&#34;The value is equal&#34;);}else{    Console.WriteLine(&#34;The value is not equal&#34;);}.کمی عمیق تر ......if (a == b) Console.WriteLine(&#34;a = b&#34;);else Console.WriteLine(&#34;a != b&#34;);حالا گاهی اوقات باید یک شرط را داخل یک خط بنویسیم (شاید کد زیر به ذهن شما برسد!)if (a == b) Console.WriteLine(&#34;a = b&#34;);else Console.WriteLine(&#34;a != b&#34;);اگر کمی دقت کرده باشید خروجی شرط ها Console.WriteLine میباشد و تنها مقدار آن تغییر میکند میتوان کد را کمی ساده کرد و به شکل زیر نوشت!int number1 = 1, number2 = 1;Console.WriteLine((number1 == number2)?&#34;number 1 == number 2&#34; : &#34;number1 != number 2&#34;);کمی توضیح درباره کد بالادر زبان سی شارپ خروجی اهمیت بالایی دارد، برای مثال خروجی Console.WriteLine یک رشته است.همچنین خروجی یک شرط true یا false میباشد.به همین دلیل زمانی که شما if را مینویسید باید بعد از آن () را بنویسید که مشخص کنید شرط در چه صورتی true و در چه صورتی false میباشد. کلمه کلیدی else به این شکل عمل میکند که اگر شرط داخل پرانتز به هر دلیلی false برگردوند وارد بلوک else شود. حتی کلمه کلیدی else if به همین موضوع اشاره میکند.در شرط یک خطی درون پرانتز شرطی بنویسید که مطمئن هستید خروجی آن true یا false است.برای مثال == یا =! بعد از آن، &#34; ؟ &#34; را به کد اضافه کنید و بعد از آن یک خروجی نمایش بدهید خروجی میتواند هر چیزی باشد بعد از نوشتن کد خروجی باید یک &#34; : &#34; بنویسید، به تصویر پایین کمی دقت کنید.خب حالا در تعریف متغیر بیاید از شرط یک خطی استفاده کنیم!int number1 = 1, number2 = 1;int number3 = (number1 == number2) ? 1 : 0;متغیر اول با نام number1 و متغیر دوم number2 با مقدار های مساوی (1) تعریف شد،سپس متغیر سوم مقدارش اگر number1 با number2 برابر نبود برابر 0 خواهد شد ، اگر هم  برابر بود همان مقدار یک قرار خواهد گرفت.یکم کد را توسعه دهیم !// متغیر ها را تعریف میکنیم&#xA;int number1 = 1, number2 = 1, number3 = 3,number4;&#xA;&#xA;number4 = ((number1 + number2)== number3 ? &#xA;    (number1 + number2) : (number2 - number1));&#xA;&#xA;// جواب چه خواهد بود؟&#xA;Console.WriteLine(number4);نوشتن شرط یک خطی در برخی موقعیت های خاص کاربرد دارد اما اگر زیاده روی کنید کدی مینویسید که به سختی توسعه داده شود.</description><category>محمد مهدی علیپور</category><author>محمد مهدی علیپور</author><pubDate>Mon, 20 Mar 2023 20:23:09 +0330</pubDate></item></channel></rss>