آموزش C# و .Net
1.56K subscribers
465 photos
329 videos
19 files
2.88K 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
‏C# Interactive یه REPL داخل ویژوال استودیوئه 💡.

‏میتونید تیکه کدای C# رو بدون نیاز به ساخت پروژه تست کنید. خیلی سریع و راحت! 🚀

‏از منوی View > Other Windows > C# Interactive بازش کنید.

‏دیگه لازم نیست یه پروژه کنسول الکی باز کنید تا یه خط کد رو امتحان کنید 😉.

https://t.me/csharp7
‏C# ⚡️: عملگر ??=

‏این عملگر مقداردهی اولیه تنبل (Lazy Initialization) انجام میده. یعنی فقط وقتی سمت چپ `null` باشه، مقدار سمت راست رو بهش اختصاص میده.

```csharp
string name = null;
‏name ??= "Unknown"; // name الان "Unknown" میشه

string title = "Mr.";
‏title ??= "Unknown"; // title همون "Mr." باقی میمونه
```

‏خیلی جاها تو کدنویسی به کار میاد 👌

https://t.me/csharp7
🔵 کوییز #SQL



آیا ORDER BY بر روی داده‌های NULL تأثیر خاصی دارد؟ 

A)
داده های NULL همیشه در ابتدا نمایش داده می‌شوند. 

B)
داده های NULL همیشه در انتها نمایش داده می‌شوند. 

C)
بستگی به پایگاه داده دارد (مثلاً در Oracle با NULLS FIRST یا NULLS LAST قابل تنظیم است). 

D)
داده های NULL حذف می‌شوند. 


پاسخ:
C)
بستگی به پایگاه داده دارد (مثلاً در Oracle با NULLS FIRST یا NULLS LAST قابل تنظیم است). 

توضیح: رفتار پیش‌فرض با NULLها در سیستم‌های مختلف متفاوت است. در برخی مانند MySQL، NULLها در مرتب‌سازی صعودی ابتدا می‌آیند. در PostgreSQL و Oracle می‌توان رفتار را مشخص کرد: 

ORDER BY column_name ASC NULLS LAST

   


💗 مطالب بعدی ما رو حتما دنبال کنید!



ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
آدرس کانال اصلی:
https://t.me/success7ir ن
آدرس وبسایت:
https://tutorial24.ir/
💠 عضو جامع ترین کانال های توسعه فردی، روانشناسی و موفقیت شوید:

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

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

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

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

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

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

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0
‏در زبان C#، برای تصمیم‌گیری بر اساس مقادیر مختلف، دو ساختار اصلی داریم: if-else if-else و switch-case.

‏دستور if-else if-else:
‏این ساختار برای بررسی شرط‌های متعدد و اجرای بلوک کد مربوط به اولین شرطی که برقرار است، استفاده می‌شود. انعطاف‌پذیری بالایی دارد و می‌تواند شرط‌های پیچیده و عملگرهای منطقی را پوشش دهد.

‏مثال:
int score = 75;
if (score >= 90)
{
Console.WriteLine("Grade: A");
}
else if (score >= 80)
{
Console.WriteLine("Grade: B");
}
else if (score >= 70)
{
Console.WriteLine("Grade: C");
}
else
{
Console.WriteLine("Grade: D");
}


‏مزایا if-else if-else:
‏- قابلیت بررسی شرط‌های پیچیده با استفاده از عملگرهای منطقی (&&, ||, !).
‏- انعطاف‌پذیری در تعیین محدوده‌های مقداری (مثلاً score >= 70).

‏معایب if-else if-else:
‏- در صورت داشتن شرط‌های زیاد، خوانایی کد ممکن است کاهش یابد.
‏- برای مقایسه یک متغیر با مقادیر ثابت متعدد، ممکن است بهینه نباشد.

---

‏دستور switch-case:
‏این ساختار برای مقایسه یک متغیر یا عبارت با مجموعه‌ای از مقادیر ثابت (case) استفاده می‌شود. در صورت تطابق، بلوک کد مربوط به آن case اجرا می‌شود. switch-case معمولاً خواناتر از if-else if-else برای مقایسه با مقادیر ثابت است.

‏مثال:
char grade = 'B';
switch (grade)
{
case 'A':
Console.WriteLine("Excellent!");
break;
case 'B':
Console.WriteLine("Good job!");
break;
case 'C':
Console.WriteLine("Pass.");
break;
case 'D':
Console.WriteLine("Needs improvement.");
break;
default:
Console.WriteLine("Invalid grade.");
break;
}


‏مزایا switch-case:
‏- خوانایی بهتر کد در مواقعی که یک متغیر با چندین مقدار ثابت مقایسه می‌شود.
‏- در برخی موارد، ممکن است کارایی بهتری نسبت به زنجیره‌ای طولانی از if-else if داشته باشد، زیرا کامپایلر می‌تواند آن را به ساختارهای بهینه‌تری تبدیل کند.
‏- استفاده از default برای پوشش مقادیری که در caseها تعریف نشده‌اند.

‏معایب switch-case:
‏- محدود به مقایسه با مقادیر ثابت است و نمی‌تواند شرط‌های پیچیده یا محدوده‌های مقداری را مستقیماً بررسی کند (مگر با ترفندهایی که خوانایی را کم می‌کند).
‏- هر case باید با دستور break (یا goto) خاتمه یابد تا از fall-through (اجرای case بعدی) جلوگیری شود، که فراموش کردن آن یک خطای رایج است.

‏نتیجه‌گیری:
‏- زمانی که نیاز به بررسی شرط‌های پیچیده، محدوده‌های مقداری یا عملگرهای منطقی دارید، if-else if-else انتخاب بهتری است.
‏- هنگامی که یک متغیر را با چندین مقدار ثابت مقایسه می‌کنید، switch-case خواناتر و اغلب بهینه‌تر است. 💡
‏- هر دو ساختار ابزارهای قدرتمندی برای کنترل جریان برنامه در C# هستند. 🚀

https://t.me/csharp7
‏C#‎ دو راه برای مدیریت داده‌ها در برنامه‌های چندنخی داره: `Channel` و `BlockingCollection`.

‏`Channel` برای سناریوهای producer/consumer با کارایی بالا مناسبه، چون سربار کمتری داره. ⚡️

‏`BlockingCollection` امکانات بیشتری مثل محدود کردن ظرفیت و پشتیبانی از الگوهای مختلف producer/consumer رو ارائه میده. ⚙️

‏انتخاب بین این دو بستگی به نیازهای خاص پروژه داره. 🤔

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

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
‏در تدوین Native AOT با C#، اگر نوعی `partial` دارید که در یک اسمبلی تعریف شده و در اسمبلی دیگری استفاده می‌شود، کامپایلر به صورت پیش‌فرض نمی‌تواند تمام اعضای آن را ببیند.

‏برای رفع این مشکل، از `TrimMode.Required` در اسمبلی تعریف‌کننده `partial` استفاده کنید تا مطمئن شوید تمام اعضای مورد نیاز در فرآیند تدوین نهایی گنجانده شوند. ⚙️🧩 این کار از حذف تصادفی اعضا در فرآیند Trim جلوگیری می‌کند.

https://t.me/csharp7
‏دانستنی C#‎:

‏`nameof` در C# 11 از تایپ‌های جنریک unbound هم پشتیبانی می‌کند. یعنی دیگه لازم نیست حتماً یک تایپ concrete بهش پاس بدید.

```csharp
nameof(List<>) // "List"
nameof(Dictionary<,>) // "Dictionary"
```

‏اینطوری اسم تایپ رو بدون دردسر و با امنیت تایپ بالا به دست میارید. 👌

https://t.me/csharp7
💡 نکته #NoSQL

🟣 موضوع : ‏Full‑Text Search در پایگاه‌های NoSQL

نکته :

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


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
‏C# 17 یه قابلیت جالب داره: Frozen Collections. 🧊

‏این کالکشن‌ها بعد از ایجاد، دیگه قابل تغییر نیستن.

‏مزیتش چیه؟ 🚀
‏بهبود کارایی و امنیت Thread-safe. دیگه نگران تغییر ناخواسته داده‌ها نباشید!

‏برای ساختنشون هم از متد ToFrozenDictionary() یا ToFrozenSet() استفاده کنید. 👌

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
💠 عضو جامع ترین کانال های توسعه فردی، روانشناسی و موفقیت شوید:

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

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

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

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

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

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

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0
‏برای دیسریال‌سازی داده‌های JSON به اشیاء سی شارپ با استفاده از System.Text.Json، می‌توانید از متد JsonSerializer.Deserialize<T> استفاده کنید. این متد یک رشته JSON را دریافت کرده و آن را به نمونه‌ای از نوع T تبدیل می‌کند.

‏فرض کنید یک کلاس C# به شکل زیر دارید:

public class User
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
}


‏و یک رشته JSON که نمایانگر داده‌های یک کاربر است:

{
"Id": 123,
"Name": "Alice",
"IsActive": true
}


‏برای دیسریال‌سازی این JSON به یک شیء User، کد زیر را اجرا کنید:

using System.Text.Json;

// ...

string jsonString = @"{
""Id"": 123,
""Name"": ""Alice"",
""IsActive"": true
}";

User user = JsonSerializer.Deserialize<User>(jsonString);

‏// حالا می‌توانید به ویژگی‌های شیء user دسترسی پیدا کنید:
Console.WriteLine($"User ID: {user.Id}");
Console.WriteLine($"User Name: {user.Name}");
Console.WriteLine($"Is Active: {user.IsActive}");


‏اگر JSON شما یک آرایه از اشیاء باشد، می‌توانید آن را به List<T> یا آرایه T[] دیسریال‌سازی کنید. برای مثال، برای دیسریال‌سازی آرایه JSON زیر:

[
{
"Id": 123,
"Name": "Alice",
"IsActive": true
},
{
"Id": 456,
"Name": "Bob",
"IsActive": false
}
]


‏از کد زیر استفاده کنید:

string jsonArrayString = @"[
{
""Id"": 123,
""Name"": ""Alice"",
""IsActive"": true
},
{
""Id"": 456,
""Name"": ""Bob"",
""IsActive"": false
}
]";

List<User> users = JsonSerializer.Deserialize<List<User>>(jsonArrayString);

foreach (var u in users)
{
Console.WriteLine($"User ID: {u.Id}, Name: {u.Name}");
}


‏این روش ساده و کارآمد، تبدیل داده‌های JSON به ساختارهای داده‌ای قابل استفاده در C# را فراهم می‌کند. 📚

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

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
‏ReaderWriterLockSlim و SemaphoreSlim هر دو ابزارهایی برای مدیریت Thread Safety در C# هستند، اما کاربردهای متفاوتی دارند.

‏ReaderWriterLockSlim برای سناریوهایی مناسب است که منابع بیشتر خوانده می‌شوند تا نوشته. امکان دسترسی همزمان چند خواننده را فراهم می‌کند در حالی که نویسنده، دسترسی انحصاری دارد.

‏SemaphoreSlim برای محدود کردن تعداد Thread هایی که به یک منبع دسترسی دارند استفاده می‌شود، بدون تفکیک بین خواننده و نویسنده.
🚦 🧰

https://t.me/csharp7
‏در C#‎، برای غیرفعال کردن هشدارهای nullable در یک قطعه کد خاص، از attribute زیر استفاده کنید:

`#nullable disable`

‏این attribute را قبل از قطعه کد مورد نظر قرار دهید. پس از آن، برای فعال کردن مجدد هشدارها، از `#nullable restore` استفاده کنید.

‏به عنوان مثال:
```csharp
#nullable disable
‏string name = null; // بدون هشدار
#nullable restore
```

‏این روش به شما امکان می‌دهد کنترل دقیقی بر هشدارهای nullable داشته باشید. ⚙️

https://t.me/csharp7
🌱🌱 نکته روز #HTML

🌿🌿 ‏در نظر گرفتن دسترسی‌پذیری: برای بهبود دسترسی‌پذیری اسلایدر، از ویژگی‌های ARIA (مانند role="region", aria-live="polite", aria-label) استفاده کنید تا اطلاعات مربوط به اسلایدر و وضعیت آن برای کاربران دارای اختلالات بینایی که از صفحه‌خوان استفاده می‌کنند، ارائه شود. همچنین، اطمینان حاصل کنید که ناوبری با صفحه کلید نیز امکان‌پذیر است.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🚀 API Gateway چیست و چرا به آن نیاز داریم؟

‏یادگیری .NET و معماری میکروسرویس‌ها جذابه، اما مدیریت APIها چالش داره! 😫

‏YARP یه راه حل عالیه! یه Reverse Proxy قدرتمند برای ساخت API Gateway.

‏با YARP می‌تونید:
‏* ترافیک رو مسیریابی کنید.
‏* امنیت رو مدیریت کنید.
‏* عملکرد رو بهبود ببخشید.

‏آموزش کامل API Gateway با YARP به زودی در کانال! 🤩
‏منتظر باشید.

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

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0