آموزش C# و .Net
1.55K subscribers
425 photos
325 videos
19 files
2.79K links
تعرفه تبلیغات :
https://t.me/+w-o6dHW5O31jMWNk

آیدی ادمین:
@ma_limbs
Download Telegram
🔵 دوست داری برنامه نویس حرفه ای بشی یا مهارت های کامپیوتری خودت رو افزایش بدی؟ با عضویت در لیست تلگرامی زیر در بی نظیر ترین کانال های برنامه نویسی ما عضو شوید:

🟢 پایتون، هوش مصنوعی، یادگیری ماشین، سی ++، سی شارپ، دات نت، نود جی اس، جاوا اسکریپت، شبکه، علم داده، پایگاه داده، sql، nosql ، مهارت های ICDL، سیستم عامل، لینوکس، فتوشاپ، گرافیک، اندروید، جاوا، ساخت اپلیکیشن موبایل، ری اکت، جی کوئری، php و laravel، دروس رشته کامپیوتر، کنکور کامپیوتر و ...

عضو لیست جامع شوید:

https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
‏`SelectMany` در C# یه overload داره که index آیتم فعلی رو هم بهت میده. ⚙️

‏فرض کن یه لیست از لیست‌ها داری و می‌خوای به هر آیتم، اندیسش تو لیست اصلی رو هم اضافه کنی. 🤔

```csharp
var result = list.SelectMany((innerList, index) =>
innerList.Select(item => new { Item = item, Index = index }));
```

‏اینجوری `index` هر لیست درونی رو هم داری.

https://t.me/csharp7
💠 عضو جامع ترین کانال های توسعه فردی، روانشناسی و موفقیت شوید:

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0

شامل موضوعات آموزشی زیر:

توسعه و رشد فردی
افزایش ثروت
هدف گذاری و مدیریت زمان
مهارت های اجتماعی، ارتباطی و فن بیان
روانشناسی و خودیاری
موفقیت
عادات موثر
سلامت و تغذیه سالم
موفقیت شغلی
عبارات تاکیدی
مدیریت اضطراب و خشم
روان درمانی CBT و ACT
شخصیت شناسی و تحلیل روانشناسی
انگیزشی
کودک درون
تکنیک های NLP
یوگا
افزایش حافظه
مدیتیشن
موفقیت تحصیلی
مطالعه موثر
افزایش اعتماد به نفس
افزایش تمرکز
تفکر مثبت
افزایش خلاقیت
نقل قول های انگیزشی

با کلیک بر روی لینک زیر عضو تمامی این کانال ها شوید:

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0
‏قابلیت Tiered Compilation در C#، لایه‌های مختلف بهینه‌سازی را برای اجرای کد ارائه می‌دهد. ⚙️

‏Tier 2، بالاترین سطح بهینه‌سازی است و برای کدهایی که بیشتر اجرا می‌شوند، فعال می‌شود. این سطح، زمان بیشتری صرف بهینه‌سازی می‌کند تا عملکرد نهایی را به حداکثر برساند. 🚀

‏به عبارت دیگر، کامپایلر ابتدا کد را به سرعت کامپایل می‌کند (Tier 0 و Tier 1) و سپس، اگر بخشی از کد به طور مکرر اجرا شود، با Tier 2 مجدداً کامپایل و بهینه‌سازی می‌شود.

https://t.me/csharp7
🔵 دوست داری برنامه نویس حرفه ای بشی یا مهارت های کامپیوتری خودت رو افزایش بدی؟ با عضویت در لیست تلگرامی زیر در بی نظیر ترین کانال های برنامه نویسی ما عضو شوید:

🟢 پایتون، هوش مصنوعی، یادگیری ماشین، سی ++، سی شارپ، دات نت، نود جی اس، جاوا اسکریپت، شبکه، علم داده، پایگاه داده، sql، nosql ، مهارت های ICDL، سیستم عامل، لینوکس، فتوشاپ، گرافیک، اندروید، جاوا، ساخت اپلیکیشن موبایل، ری اکت، جی کوئری، php و laravel، دروس رشته کامپیوتر، کنکور کامپیوتر و ...

عضو لیست جامع شوید:

https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
‏Global using directives در C# 10 معرفی شد.

‏با این قابلیت، namespaceها را یک‌بار در یک فایل تعریف می‌کنید و در کل پروژه قابل استفاده هستند.

‏دیگر نیازی نیست `using System;` را در بالای هر فایل تکرار کنید! 😎

‏کافیست یک فایل (مثلاً GlobalUsings.cs) بسازید و namespaceهای پرکاربرد را global تعریف کنید:

`global using System;`
`global using System.Collections.Generic;`

‏به این ترتیب، این namespaceها در تمام فایل‌های پروژه در دسترس خواهند بود. 👌🚀

https://t.me/csharp7
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین‌ و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید:

🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... :

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
‏C# 14، Roslyn APIs جدیدی برای تحلیل و دستکاری کد معرفی کرد. 🛠️

‏این APIها امکانات پیشرفته‌تری برای دیباگ، ریفکتورینگ و تولید کد فراهم می‌کنند. با استفاده از این امکانات، توسعه‌دهندگان می‌توانند ابزارهای قدرتمندتری برای بهبود کیفیت و کارایی کد ایجاد کنند. 🚀

‏به عنوان مثال، APIهای جدید، تحلیل معنایی (Semantic Analysis) کد را تسهیل می‌کنند. 🔍

https://t.me/csharp7
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین‌ و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید:

🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... :

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
‏fractions تو پایتون یه دنیای دیگه‌ست!

‏ دیگه لازم نیست نگران محاسبات پیچیده کسری باشی.

‏ با ماژول `fractions`، جمع، تفریق، ضرب و تقسیم کسرها رو خیلی راحت انجام بده.

‏ مثلاً `Fraction(1, 2) + Fraction(1, 3)` میشه `5/6`! 🤩

‏ دیگه چی از این بهتر؟ پایتون، ریاضی رو شیرین می‌کنه! 🍰
#پایتون #آموزش #کسر

https://t.me/python7ir
🔵 دوست داری برنامه نویس حرفه ای بشی یا مهارت های کامپیوتری خودت رو افزایش بدی؟ با عضویت در لیست تلگرامی زیر در بی نظیر ترین کانال های برنامه نویسی ما عضو شوید:

🟢 پایتون، هوش مصنوعی، یادگیری ماشین، سی ++، سی شارپ، دات نت، نود جی اس، جاوا اسکریپت، شبکه، علم داده، پایگاه داده، sql، nosql ، مهارت های ICDL، سیستم عامل، لینوکس، فتوشاپ، گرافیک، اندروید، جاوا، ساخت اپلیکیشن موبایل، ری اکت، جی کوئری، php و laravel، دروس رشته کامپیوتر، کنکور کامپیوتر و ...

عضو لیست جامع شوید:

https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
‏متغیر `_` در سی‌شارپ یه جور سطل آشغاله🗑️. وقتی یه متغیر تعریف می‌کنی ولی نمی‌خوای ازش استفاده کنی، بذارش `_`.

‏اینجوری هم کدخواناتر میشه، هم کامپایلر اخطار نمیده ⚠️. مثلاً تو Deconstruct کردن:

```csharp
(int age, string _, string city) = GetPerson();
```

‏فقط سن و شهر رو می‌خوایم، اسم مهم نیست. 😎

https://t.me/csharp7
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین‌ و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید:

🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... :

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
‏ویژگی NRT در C#، خطای null reference را در زمان کامپایل کاهش می‌دهد. 🛡️

‏در رکوردها (records)، این ویژگی به شکل زیر در پراپرتی‌ها اعمال می‌شود:

```csharp
public record Person(string FirstName, string? LastName);
```

‏علامت سوال `?` بعد از `string` نشان می‌دهد `LastName` می‌تواند null باشد. در غیر این صورت، کامپایلر مطمئن می‌شود که مقدار null به پراپرتی غیرnullable اختصاص داده نشود.

https://t.me/csharp7
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین‌ و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید:

🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... :

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
‏در C#، متغیرهایی که به عنوان پارامتر به یک متد (تابع) ارسال می‌شوند، مانند متغیرهای محلی، دارای محدوده (scope) و عمر (lifetime) مشخصی هستند.

‏محدوده این پارامترها فقط داخل خود متد تعریف شده است. به محض اینکه اجرای متد به پایان برسد، این پارامترها از حافظه پاک شده و دیگر قابل دسترسی نخواهند بود. این بدان معناست که شما نمی‌توانید خارج از متد به مقادیر یا حتی وجود این پارامترها دسترسی داشته باشید.

‏این رفتار برای جلوگیری از تداخل داده‌ها بین بخش‌های مختلف برنامه و حفظ نظم در اجرای کد بسیار حیاتی است. 💡

‏void PrintMessage(string message) // 'message' یک پارامتر متد است
{
‏ Console.WriteLine(message); // 'message' فقط در اینجا قابل دسترسی است
}

‏// در خارج از این متد، 'message' دیگر وجود ندارد.


‏این اصل، مدیریت حافظه و جلوگیری از خطاهای احتمالی را در برنامه‌های پیچیده C# تسهیل می‌کند.

https://t.me/csharp7
‏در C#، انتخاب نوع مجموعه داده مناسب برای عملیات مختلف می‌تواند تأثیر قابل توجهی بر عملکرد داشته باشد. برای مثال، در سناریوهایی که نیاز به دسترسی مکرر به عناصر یا افزودن/حذف سریع دارید، List<T> معمولاً انتخاب خوبی است. اما وقتی صحبت از داده‌های بزرگ و عملیات موازی می‌شود، گزینه‌های دیگری نیز مطرح می‌شوند.

ConcurrentBag<T> یکی از این گزینه‌هاست که برای سناریوهای چندنخی (multi-threaded) طراحی شده و امکان افزودن و حذف ایمن عناصر را بدون نیاز به قفل‌گذاری صریح فراهم می‌کند. در مقایسه با List<T> در محیط‌های موازی، ConcurrentBag<T> می‌تواند سربار کمتری داشته باشد.

‏برای درک بهتر تفاوت عملکرد، می‌توان زمان‌بندی اجرای عملیات مختلف مانند افزودن، حذف و پیمایش را در List<T> و ConcurrentBag<T> تحت بار موازی اندازه‌گیری کرد. نتایج معمولاً نشان می‌دهند که ConcurrentBag<T> در سناریوهای با دسترسی همزمان بالا، کارایی بهتری از خود نشان می‌دهد. 📊⏱️

https://t.me/csharp7
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین‌ و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید:

🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... :

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
📌 در #C، کلاس `Random` دو روش برای تولید اعداد تصادفی داره.

‏`Random.Shared` یک نمونه استاتیک و سراسری از `Random` رو برمی‌گردونه که برای کل برنامه به اشتراک گذاشته می‌شه. این روش سریع‌تره و برای تولید اعداد تصادفی در threadهای مختلف مناسبه.

‏اما `new Random()` هر بار یک نمونه جدید از `Random` ایجاد می‌کنه. اگه این نمونه‌ها خیلی سریع پشت سر هم ایجاد بشن، ممکنه اعداد تصادفی یکسانی تولید کنن. 🎲

‏به طور خلاصه: برای عملکرد بهتر و جلوگیری از تکرار، `Random.Shared` رو انتخاب کن. ⚙️

https://t.me/csharp7
🔍🧹

‏آنالیزورهای #C به شما کمک می‌کنند کدهای بهتری بنویسید. اما گاهی هشدارهای غیرضروری می‌دهند.

‏می‌توانید با استفاده از فایل `.editorconfig` سطح سخت‌گیری یک قانون (Rule) خاص را تغییر دهید. مثلاً یک هشدار را به یک پیشنهاد تبدیل کنید یا کلاً غیرفعالش کنید.

‏به این ترتیب، هم از مزایای آنالیز کد بهره‌مند می‌شوید و هم از هشدارهای اضافی خلاص می‌شوید. 👌

https://t.me/csharp7
‏برای جلوگیری از حلقه‌های for بی‌نهایت در C#، اطمینان حاصل کنید که شرط خروج حلقه در هر تکرار به سمت false شدن پیش می‌رود.

‏مثال رایج، حلقه‌هایی هستند که شمارنده آن‌ها به جای افزایش، کاهش می‌یابد و شرط خروج، بزرگتر بودن از یک عدد ثابت است.

‏// حلقه for بی‌نهایت
for (int i = 0; i > -10; i++)
{
‏ // کد شما
Console.WriteLine(i);
}


‏در این مثال، i همیشه بزرگتر از -10 باقی می‌ماند. برای اصلاح، یا شرط خروج را تغییر دهید یا جهت شمارنده را معکوس کنید:

‏// حلقه for صحیح
for (int i = 0; i < 10; i++)
{
‏ // کد شما
Console.WriteLine(i);
}


‏یا

‏// حلقه for صحیح با شمارنده معکوس
for (int i = 0; i > -10; i--)
{
‏ // کد شما
Console.WriteLine(i);
}


‏همیشه منطق شرط خروج حلقه را با دقت بررسی کنید. 🔄💡

https://t.me/csharp7