<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>پست‌های انتشارات برنامه نویسی .netcore</title>
        <link>https://virgool.io/netcore/feed</link>
        <description>سعی می کنم هر چیزی که در مورد سی شارپ و net core. بلد هستم به علاقه مندان نشر دهم</description>
        <language>fa</language>
        <pubDate>2026-06-16 21:21:10</pubDate>
        <image>
            <url>https://files.virgool.io/upload/publication/xer1wlyffbdg/rturvq.png</url>
            <title>برنامه نویسی .netcore</title>
            <link>https://virgool.io/netcore</link>
        </image>

                    <item>
                <title>تفاوت میان First و FirstOrDefault و Single و SingleOrDefault و Last و LastOrDefault</title>
                <link>https://virgool.io/netcore/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D9%85%DB%8C%D8%A7%D9%86-first-%D9%88-firstordefault-%D9%88-single-%D9%88-singleordefault-%D9%88-last-%D9%88-lastordefault-giabthprkj49</link>
                <description>همه این 6 متدها یک مقدار  از یک توالی را برمیگردانند و می توانند با predicate یا بدون predicate باشد. First:اولین عنصر از یک توالی یا اولین عنصر را که توسط predicate برابر باشد، بر میگرداند. اگر در یک توالی هیچ عنصری وجود نداشته باشد از InvalidOperationException خوانده میشود و پیام : &quot;Sequence contains no elemts&quot; به کاربر نمایش داده می شود. اگر نوع predicate  با یکی از عناصر توالی  برابر نباشد در این صورت باز InvalidOperationException فراخوانی شده و پیام  &quot;Sequence contains no matching element&quot; نمایش داده می شود. // Returns &amp;quota&amp;quot:
 new[] { &amp;quota&amp;quot }.First();  

// Returns &amp;quota&amp;quot:
 new[] { &amp;quota&amp;quot, &amp;quotb&amp;quot }.First(); 

 // Returns &amp;quotb&amp;quot: 
new[] { &amp;quota&amp;quot, &amp;quotb&amp;quot }.First(x =&gt; x.Equals(&amp;quotb&amp;quot));  

// Returns &amp;quotba&amp;quot: 
new[] { &amp;quotba&amp;quot, &amp;quotbe&amp;quot }.First(x =&gt; x.Contains(&amp;quotb&amp;quot));  

// Throws InvalidOperationException: 
new[] { &amp;quotca&amp;quot, &amp;quotce&amp;quot }.First(x =&gt; x.Contains(&amp;quotb&amp;quot));  

// Throws InvalidOperationException:
 new string[0].First();FirstOrDefault:اولین عنصر از توالی یا اولین عنصری که برابر باشد predicate را برمیگرداند. اگر مقدار predicate برابر نباشد یا هیچ عنصری در توالی نباشد در این صورت مقدار default(T) را بر میگرداند. // Returns &amp;quota&amp;quot:
new[] { &amp;quota&amp;quot }.FirstOrDefault();

// Returns &amp;quota&amp;quot:
new[] { &amp;quota&amp;quot, &amp;quotb&amp;quot }.FirstOrDefault();

// Returns &amp;quotb&amp;quot:
new[] { &amp;quota&amp;quot, &amp;quotb&amp;quot }.FirstOrDefault(x =&gt; x.Equals(&amp;quotb&amp;quot));

// Returns &amp;quotba&amp;quot:
new[] { &amp;quotba&amp;quot, &amp;quotbe&amp;quot }.FirstOrDefault(x =&gt; x.Contains(&amp;quotb&amp;quot));

// Returns null:
new[] { &amp;quotca&amp;quot, &amp;quotce&amp;quot }.FirstOrDefault(x =&gt; x.Contains(&amp;quotb&amp;quot));

// Returns null:
new string[0].FirstOrDefault();Last:آخرین عنصر موجود در توالی یا آخرین عنصری که در  predicateبرابر باشد را برمیگرداند. اگر هیچ عنصری در توالی موجود نبود &quot;InvalidOperationException&quot; فراخوانی و پیام &quot;Sequence contains no elemets&quot; نمایش داده می شود. اگر هیچ عنصری وجود نداشت که برابر با مقدار predicate  باشد باز &quot;InvalidOperationException&quot; و پیام &quot;Sequence contains no matching element&quot; نمایش داده می شود. // Returns &amp;quota&amp;quot:
 new[] { &amp;quota&amp;quot }.Last();  

// Returns &amp;quotb&amp;quot:
 new[] { &amp;quota&amp;quot, &amp;quotb&amp;quot }.Last();  

// Returns &amp;quota&amp;quot: 
new[] { &amp;quota&amp;quot, &amp;quotb&amp;quot }.Last(x =&gt; x.Equals(&amp;quota&amp;quot));  

// Returns &amp;quotbe&amp;quot: 
new[] { &amp;quotba&amp;quot, &amp;quotbe&amp;quot }.Last(x =&gt; x.Contains(&amp;quotb&amp;quot)); 

 // Throws InvalidOperationException: 
new[] { &amp;quotca&amp;quot, &amp;quotce&amp;quot }.Last(x =&gt; x.Contains(&amp;quotb&amp;quot));  

// Throws InvalidOperationException:
 new string[0].Last();LasrOrDefault:این متد همانند FirsrOrDefault می باشد اما برخلاف First که اولین را برمیگرداند این متد آخرین را برمیگرداند. // Returns &amp;quota&amp;quot:
new[] { &amp;quota&amp;quot }.LastOrDefault();

// Returns &amp;quotb&amp;quot:
new[] { &amp;quota&amp;quot, &amp;quotb&amp;quot }.LastOrDefault();

// Returns &amp;quota&amp;quot:
new[] { &amp;quota&amp;quot, &amp;quotb&amp;quot }.LastOrDefault(x =&gt; x.Equals(&amp;quota&amp;quot));

// Returns &amp;quotbe&amp;quot:
new[] { &amp;quotba&amp;quot, &amp;quotbe&amp;quot }.LastOrDefault(x =&gt; x.Contains(&amp;quotb&amp;quot));

// Returns null:
new[] { &amp;quotca&amp;quot, &amp;quotce&amp;quot }.LastOrDefault(x =&gt; x.Contains(&amp;quotb&amp;quot));

// Returns null:
new string[0].LastOrDefault();Single:اگر در توالی دقیقا یک عنصر وجود داشت یا مقدار predicate دقیقا برابر با یک عنصر از توالی باشد در آن صورت آن عنصر را برمیگرداند. اگر در توالی هیچ عنصری وجود نداشت یا هیچ عنصری برابر با مقدار predicate  نبود در ان صورت &quot;InvalidOperationException&quot; فراخونی و پیام &quot;Sequence contains no elements&quot; نمایش داده می شود. اگر در توالی بیش از یک عنصر باشد یا مقدار predicate بیش از یک عنصر را انتخاب کند &quot;InvalidOperationException&quot;  فراخوانی و پیام &quot;Sequence contains more than one element&quot; نمایش داده می شود. // Returns &amp;quota&amp;quot:
new[] { &amp;quota&amp;quot }.Single();

// Throws InvalidOperationException because sequence contains more than one element:
new[] { &amp;quota&amp;quot, &amp;quotb&amp;quot }.Single();

// Returns &amp;quotb&amp;quot:
new[] { &amp;quota&amp;quot, &amp;quotb&amp;quot }.Single(x =&gt; x.Equals(&amp;quotb&amp;quot));

// Throws InvalidOperationException:
new[] { &amp;quota&amp;quot, &amp;quotb&amp;quot }.Single(x =&gt; x.Equals(&amp;quotc&amp;quot));

// Throws InvalidOperationException:
new string[0].Single();

// Throws InvalidOperationException because sequence contains more than one element:
new[] { &amp;quota&amp;quot, &amp;quota&amp;quot }.Single();SingleOrDefault:اگر در توالی دقیقا یک عنصر وجود داشت یا مقدار predicate دقیقا برابر با یک عنصر از توالی باشد در آن صورت همان عنصر را برمیگرداند. اگر در توالی هیچ عنصری وجود نداشت یا هیچ عنصری برابر با مقدار predicate  نبود در آن صورت Default(T) برگشت داده می شود. اگر در توالی بیش از یک عنصر باشد یا مقدار predicate بیش از یک عنصر را انتخاب کند &quot;InvalidOperationException&quot;  فراخوانی و پیام &quot;Sequence contains more than one element&quot; نمایش داده می شود.// Returns &amp;quota&amp;quot:
new[] { &amp;quota&amp;quot }.SingleOrDefault();

// returns &amp;quota&amp;quot
new[] { &amp;quota&amp;quot, &amp;quotb&amp;quot }.SingleOrDefault(x =&gt; x == &amp;quota&amp;quot);

// Returns null:
new[] { &amp;quota&amp;quot, &amp;quotb&amp;quot }.SingleOrDefault(x =&gt; x == &amp;quotc&amp;quot);

// Throws InvalidOperationException:
new[] { &amp;quota&amp;quot, &amp;quota&amp;quot }.SingleOrDefault(x =&gt; x == &amp;quota&amp;quot);

// Throws InvalidOperationException:
new[] { &amp;quota&amp;quot, &amp;quotb&amp;quot }.SingleOrDefault();

// Returns null:
new string[0].SingleOrDefault();</description>
                <category>برنامه نویسی .netcore</category>
                <author>میلاد نعمت پور</author>
                <pubDate>Sat, 19 Dec 2020 13:33:44 +0330</pubDate>
            </item>
                    <item>
                <title>When in C#</title>
                <link>https://virgool.io/netcore/whenincsharp-kzwv2mfsvarb</link>
                <description>کلمه کلیدی when اولین بار در C#6  و برای کار با Exceptionها اضافه شدقبل از معرفی when، برای مدیریت خطاها  از یک بلاک catch برای انواع exceptionها استفاده می کردیم اما با اضافه شدن این کلمه کلیدی امکان کنترل بهتری برای ما فراهم شد.برای استفاده از when ، به بلاک catch، کلمه کلیدی when اضافه می کنیم. بلاک catch نیز زمانی استفاده می شود که شرط when صحیح باشد. همانند مثال زیرprivate void CatchException(Action action)
{
    try
      {
         action.Invoke();
      }
       // exception filter
       catch (Exception ex) when (ex.Message.Contains(&amp;quotwhen&amp;quot))
         {
            Console.WriteLine(&amp;quotCaught an exception with when&amp;quot);
         }
          catch (Exception ex)
         {
       Console.WriteLine(&amp;quotCaught an exception without when&amp;quot);
         }
}--------------------------------از آنجاییکه که ورودی متد CatchException ما از نوع action می باشد این متد ها را می سازیم با یک دستور که خطای دستی ایجاد کنیمprivate void Method1() { throw new Exception(&amp;quotmessage for exception with when&amp;quot); }private void Method2() { throw new Exception(&amp;quotmessage for general exception&amp;quot); }--------------------------------در متد main متد catchException را فرا میخوانیمCatchException(Method1);CatchException(Method2);</description>
                <category>برنامه نویسی .netcore</category>
                <author>میلاد نعمت پور</author>
                <pubDate>Tue, 08 Dec 2020 14:22:16 +0330</pubDate>
            </item>
            </channel>
</rss>