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

آیدی ادمین:
@ma_limbs
Download Telegram
🚀 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
‏با استفاده از LINQ to Entities در Entity Framework Core، می‌توان کوئری‌های قدرتمندی برای بازیابی و دستکاری داده‌ها از پایگاه داده نوشت. این روش، امکان نوشتن کوئری‌ها به زبان C# را فراهم می‌کند و نیازی به نوشتن SQL خام نیست.

‏برای مثال، برای بازیابی تمامی کاربران فعال از یک جدول:

var activeUsers = context.Users.Where(u => u.IsActive).ToList();


‏این کوئری، لیستی از تمام اشیائی که خاصیت IsActive آن‌ها true است را برمی‌گرداند. LINQ to Entities این کوئری C# را به SQL معادل ترجمه کرده و اجرا می‌کند. 🚀

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

‏این رویکرد، کد را خواناتر و نگهداری آن را آسان‌تر می‌کند. 💡

https://t.me/csharp7
‏در #C، مهاجرت کد قدیمی به Nullable Reference Types با دستور `#nullable enable` در سطح فایل یا پروژه انجام میشه.

‏این کار باعث میشه کامپایلر، هشدارهایی رو در مورد احتمال Null بودن متغیرها نشون بده. ⚠️ با این روش، می‌تونید تدریجی باگ‌های مربوط به NullReferenceException رو پیدا و رفع کنید. 🛠️

https://t.me/csharp7
💡 دیباگ کردن Source Generatorها در C# ممکنه چالش‌برانگیز باشه.

⚙️ برای این کار، پراپرتی <EmitCompilerGeneratedFiles> رو در فایل .csproj پروژه generator روی true تنظیم کنید.

📁 این کار باعث میشه فایل‌های تولید شده توسط generator در مسیر obj\Debug\net6.0\generated (یا مشابه) ذخیره بشن و بتونید اون‌ها رو بررسی و دیباگ کنید.

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
🔵 کوییز #HTML

🟣 موضوع : ‏تگ‌های صوتی HTML5 (audio)

🟢 سوال :

‏کدام ویژگی تگ <source> فرمت فایل صوتی ارائه شده را مشخص می‌کند؟

گزینه ۱:
‏src (مسیر فایل)

گزینه ۲:
type

گزینه ۳:
‏media (برای media queries)

گزینه ۴:
‏kind (برای زیرنویس)



🔵 گزینه صحیح: 2

🟢 توضیح :

‏ویژگی type در تگ <source> نوع رسانه (MIME type) فایل صوتی مشخص شده در ویژگی src را تعیین می‌کند (مثلاً audio/mpeg, audio/ogg, audio/wav). این به مرورگر کمک می‌کند تا تشخیص دهد آیا می‌تواند فایل را پخش کند یا خیر.

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

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

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

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #NoSQL

🟣 موضوع : ‏نظارت و مانیتورینگ (Monitoring)

نکته :

‏یه نگاهی هم به سایز دیتابیس بنداز. اگه خیلی بزرگ شده، شاید وقتشه یه تمیزکاری کنی🧹🗑️


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

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

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

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

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
‏در C#، هنگام کار با فایل‌ها، ممکن است با خطاهایی مربوط به مجوزهای دسترسی مواجه شوید. این خطاها معمولاً به دلیل عدم داشتن دسترسی کافی برای خواندن، نوشتن یا حذف فایل رخ می‌دهند.

‏برای مدیریت این نوع خطاها، می‌توانید از بلوک try-catch استفاده کنید. خطای خاصی که معمولاً برای این منظور استفاده می‌شود، UnauthorizedAccessException است.

‏مثال:
try
{
‏ // تلاش برای عملیات روی فایل (مثلاً خواندن یا نوشتن)
string filePath = "C:\\path\\to\\your\\file.txt";
File.WriteAllText(filePath, "This is some text.");
}
catch (UnauthorizedAccessException ex)
{
‏ // مدیریت خطای عدم دسترسی
‏ Console.WriteLine($"خطا: دسترسی به فایل مجاز نیست. جزئیات: {ex.Message}");
}
catch (Exception ex)
{
‏ // مدیریت سایر خطاهای احتمالی
‏ Console.WriteLine($"خطای عمومی رخ داد: {ex.Message}");
}

‏این رویکرد به شما امکان می‌دهد تا به طور موثر خطاهای مربوط به مجوزهای دسترسی را تشخیص داده و پیام مناسبی را به کاربر نمایش دهید. 🔒📄

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
🔵 کوییز #سی_شارپ

🟣 موضوع : ‏ساختار پایه‌ای یک برنامه C#

🟢 سوال :

‏کدام یک از موارد زیر برای تعریف متغیرها و انواع داده‌ها در C# استفاده می‌شود؟

گزینه ۱:
‏تعریف کلاس

گزینه ۲:
‏تعریف متد Main

گزینه ۳:
‏تعریف نام فضا (namespace)

گزینه ۴:
‏بدنه متد یا کلاس

🔵 گزینه صحیح: 4

🟢 توضیح :

‏بدنه متد یا کلاس برای تعریف متغیرها و انواع داده‌ها استفاده می‌شود.

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

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

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

آدرس وبسایت:
https://Tutorial24.ir
‏Source Generatorها در C#، امکان تولید کد در زمان کامپایل را فراهم می‌کنند. ⚙️

‏با استفاده از این قابلیت، می‌توان وابستگی‌ها (Dependency Injection) را به صورت خودکار تولید کرد. این کار نیاز به نوشتن boilerplate code را کاهش می‌دهد و خوانایی کد را افزایش می‌دهد.

‏به این ترتیب، فریم‌ورک‌های DI می‌توانند بدون استفاده از reflection در زمان اجرا، وابستگی‌ها را مدیریت کنند که منجر به بهبود کارایی می‌شود. 🚀

https://t.me/csharp7
‏متد GetHashCode در C# برای تولید کد hash یک شیء استفاده میشه. 🧮

‏وقتی متد Equals رو override می‌کنید، حتماً GetHashCode رو هم override کنید. ⚠️

‏اگر دو شیء با هم برابر باشند (Equals == true)، کد hash اونها هم باید یکسان باشه. در غیر این صورت، کالکشن‌های hash-based مثل Dictionary درست کار نمی‌کنند. ⚙️

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
💡 نکته #SQL

🟣 موضوع : NATURAL JOIN

نکته :

‏وقتی با NATURAL JOIN کار می‌کنی، حتماً قبلش ساختار جداول رو چک کن. 👀


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
‏کلاس‌های انتزاعی (Abstract Classes) و اینترفیس‌ها (Interfaces) هر دو در C# برای تعریف قراردادها و دستیابی به انتزاع استفاده می‌شوند، اما تفاوت‌های کلیدی دارند.

‏کلاس انتزاعی:
‏- می‌تواند شامل متدهای انتزاعی (بدون پیاده‌سازی) و متدهای غیرانتزاعی (با پیاده‌سازی) باشد.
‏- می‌تواند دارای اعضای کلاس مانند فیلدها، سازنده‌ها (constructors) و توابع destructor باشد.
‏- یک کلاس فقط می‌تواند از یک کلاس انتزاعی ارث‌بری کند (قانون ارث‌بری تکی).
‏- برای تعریف یک "چیزی" است که می‌تواند حالت (state) داشته باشد و رفتار مشترک را به اشتراک بگذارد.

‏اینترفیس:
‏- فقط می‌تواند شامل متدهای انتزاعی، خصوصیات (properties) و رویدادها (events) باشد. از C# 8 به بعد، امکان افزودن متدهای با پیاده‌سازی پیش‌فرض نیز فراهم شده است.
‏- نمی‌تواند دارای فیلد باشد.
‏- یک کلاس می‌تواند از چندین اینترفیس پیاده‌سازی کند (ارث‌بری چندگانه).
‏- برای تعریف یک "قابلیت" یا "وظیفه" است که کلاس‌ها می‌توانند آن را پیاده‌سازی کنند.

‏مقایسه:
‏| ویژگی | کلاس انتزاعی | اینترفیس |
|---|---|---|
‏| پیاده‌سازی متد | دارد (هم انتزاعی و هم غیرانتزاعی) | ندارد (به جز متدهای با پیاده‌سازی پیش‌فرض از C# 8) |
‏| فیلد | دارد | ندارد |
‏| سازنده | دارد | ندارد |
‏| ارث‌بری | تکی (از یک کلاس) | چندگانه (از چندین اینترفیس) |
‏| هدف اصلی | اشتراک‌گذاری کد و حالت بین کلاس‌های مرتبط | تعریف قرارداد و قابلیت |

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

‏// مثال کلاس انتزاعی
abstract class Shape
{
‏ public abstract double Area(); // متد انتزاعی

‏ public void Display() // متد غیرانتزاعی
{
Console.WriteLine("This is a shape.");
}
}

class Circle : Shape
{
public double Radius { get; set; }

public Circle(double radius)
{
Radius = radius;
}

public override double Area()
{
return Math.PI * Radius * Radius;
}
}


‏// مثال اینترفیس
interface IDrawable
{
‏ void Draw(); // متد انتزاعی
}

interface IResizable
{
‏ void Resize(double factor); // متد انتزاعی
}

class Square : IDrawable, IResizable
{
public double Side { get; private set; }

public Square(double side)
{
Side = side;
}

public void Draw()
{
Console.WriteLine($"Drawing a square with side {Side}");
}

public void Resize(double factor)
{
Side *= factor;
Console.WriteLine($"Resized square to side {Side}");
}
}

💡


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

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
🧵 پایتون و تردها! یه کم کار سنگین داری و میخوای سریع‌تر انجام بشه؟ تردینگ (Threading) به کمکت میاد!

‏اما یه مشکل هست: ممکنه چند تا ترد بخوان همزمان به یه منبع دسترسی داشته باشن 🤯. اینجاست که Lockها وارد میشن!

‏Lock مثل یه کلید🔑 میمونه. هر تردی که بخواد از منبع استفاده کنه، اول باید کلید رو بگیره. وقتی کارش تموم شد، کلید رو پس میده تا ترد بعدی بتونه استفاده کنه.

‏با Lockها خیالت راحته که داده‌هات خراب نمیشن! 😎

https://t.me/python7ir
‏در ASP.NET Core دو نوع فیلتر برای مدیریت نتیجه درخواست‌ها وجود دارد: `IResultFilter` و endpoint filter.

‏`IResultFilter` بعد از اجرای action و قبل از serialize شدن نتیجه، اجرا می‌شود و امکان تغییر نتیجه نهایی را فراهم می‌کند.

‏endpoint filter اما قبل از binding مدل و اجرای action، و همچنین بعد از action و قبل از ارسال پاسخ اجرا می‌شود. endpoint filter کنترل بیشتری روی lifecycle درخواست دارد. ⚙️

‏انتخاب بین این دو، بستگی به میزان کنترل مورد نیاز شما دارد. 🎯

https://t.me/csharp7
‍‍
‏MemoryPool<T> در C# برای مدیریت کارآمد حافظه استفاده میشه. 💾 دیگه نیازی نیست نگران تخصیص و آزادسازی مکرر حافظه باشی.

‏میتونی MemoryPool رو به صورت پیش‌فرض استفاده کنی یا Pool خودت رو بسازی! 🧑‍💻 با ساخت custom pool، کنترل بیشتری روی نحوه تخصیص و استفاده از حافظه داری و می‌تونی اون رو دقیقاً مطابق نیازهای برنامه‌ات تنظیم کنی. ⚙️

https://t.me/csharp7