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

آیدی ادمین:
@ma_limbs
Download Telegram
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین‌ و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید:

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
‏Kestrel یک وب سرور متن‌باز و کراس پلتفرم است که به طور پیش‌فرض در ASP.NET Core استفاده می‌شود. این وب سرور برای میزبانی برنامه‌های ASP.NET Core در محیط‌های مختلف، از جمله توسعه محلی و استقرار در تولید، طراحی شده است.

‏Kestrel به دلیل سبک بودن، سرعت بالا و انعطاف‌پذیری، انتخاب مناسبی برای اجرای برنامه‌های ASP.NET Core است. این وب سرور می‌تواند مستقیماً برنامه‌های شما را اجرا کند یا به عنوان یک پروکسی معکوس (Reverse Proxy) در پشت یک وب سرور دیگر مانند IIS یا Nginx عمل کند.

‏هنگام توسعه یک برنامه ASP.NET Core، Kestrel به طور خودکار راه‌اندازی می‌شود و برنامه شما را روی یک پورت مشخص (معمولاً 5000 یا 5001) در دسترس قرار می‌دهد. این امکان توسعه سریع و تست برنامه‌ها را بدون نیاز به پیکربندی پیچیده فراهم می‌کند. 🚀

‏برای پیکربندی Kestrel، می‌توانید از فایل Program.cs یا Startup.cs (در نسخه‌های قدیمی‌تر ASP.NET Core) استفاده کنید. به عنوان مثال، برای تنظیم پورت‌های گوش دادن:

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

‏// تنظیم پورت‌های گوش دادن
app.Run("http://localhost:8080");


‏همچنین می‌توانید Kestrel را برای گوش دادن به چندین آدرس و پورت به طور همزمان پیکربندی کنید:

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.Run(new[] { "http://localhost:5000", "https://localhost:5001" });


‏Kestrel همچنین از ویژگی‌هایی مانند HTTPS، HTTP/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
‏کلاس‌های انتزاعی (Abstract Classes) در C# امکان تعریف متدهایی بدون بدنه را فراهم می‌کنند که باید توسط کلاس‌های مشتق شده پیاده‌سازی شوند. این ویژگی به ایجاد ساختارهای سلسله مراتبی قوی و اجبار به پیاده‌سازی متدهای کلیدی کمک می‌کند.

‏نکته مهم این است که شما نمی‌توانید مستقیماً از یک کلاس انتزاعی نمونه‌سازی (instantiate) کنید. هدف کلاس انتزاعی، ارائه یک الگوی کلی است که توسط کلاس‌های ملموس‌تر (Concrete Classes) به ارث برده و تکمیل شود.

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

‏// مثال کلاس انتزاعی
abstract class Shape
{
‏ public abstract void Draw(); // متد انتزاعی بدون بدنه
}

‏// کلاس مشتق شده که باید متد انتزاعی را پیاده‌سازی کند
class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle.");
}
}

‏// تلاش برای نمونه‌سازی از کلاس انتزاعی خطا می‌دهد
🔵 دوست داری برنامه نویس حرفه ای بشی یا مهارت های کامپیوتری خودت رو افزایش بدی؟ با عضویت در لیست تلگرامی زیر در بی نظیر ترین کانال های برنامه نویسی ما عضو شوید:

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

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

https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
‏در ASP.NET Core برای تزریق وابستگی (Dependency Injection)، دو روش `FromServices` و `FromKeyedServices` وجود دارد.

‏`FromServices` وابستگی را مستقیماً از کانتینر DI می‌گیرد.

‏اما `FromKeyedServices` به شما امکان می‌دهد یک سرویس را بر اساس کلید (Key) خاصی بازیابی کنید. این روش زمانی مفید است که چندین پیاده‌سازی از یک اینترفیس وجود داشته باشد و بخواهید پیاده‌سازی خاصی را انتخاب کنید. 🔑

‏به عبارت دیگر، `FromKeyedServices` کنترل بیشتری بر انتخاب وابستگی ارائه می‌دهد. ⚙️

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

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏رفتار پیش‌فرض SQLite

نکته 1:
‏رفتار پیش‌فرض SQLite اینه که کل دیتابیس رو تو یه فایل تکی ذخیره می‌کنه و به سرور جداگانه نیازی نداره. یه فایل یعنی همه چیز! 📦💾💡

نکته 2:
‏به صورت پیش‌فرض، SQLite از حالت Journal Mode (معمولاً DEFERRED) استفاده می‌کنه. این باعث می‌شه که عملیات نوشتن کندتر باشه، اما داده‌ها ایمن‌تر باشن. 🛡️

نکته 3:
‏وقتی یه عملیات نوشتن (INSERT/UPDATE/DELETE) انجام می‌دی، SQLite به طور پیش‌فرض یه تراکنش (Transaction) جدید ایجاد می‌کنه و بلافاصله COMMIT می‌کنه (Autocommit). 📝

نکته 4:
‏برای امنیت، سطح Synchronous پیش‌فرض روی FULL تنظیم شده. این یعنی دیتابیس همیشه مطمئن می‌شه که اطلاعات قبل از تأیید، روی دیسک ذخیره شدن. 🔒🔥

نکته 5:
‏SQLite از نظر نوع داده‌ها سست عمل می‌کنه! یعنی اگه ستونی رو INTEGER تعریف کنی، باز هم می‌تونی توش یه متن ذخیره کنی. ⚠️

نکته 6:
‏به طور پیش‌فرض، اگه یه جدول بسازی و PRIMARY KEY رو مشخص نکنی، SQLite یه ستون پنهان به اسم rowid برای شناسایی ردیف‌ها اضافه می‌کنه. 🔢

نکته 7:
‏تو حالت عادی، SQLite فقط به یک نویسنده (Writer) تو هر لحظه اجازه می‌ده. اگه چندین برنامه همزمان بخوان بنویسن، بقیه باید صبر کنن. 🚫

نکته 8:
‏اندازه‌ی پیش‌فرض صفحات دیتابیس (Page Size) معمولاً ۴۰۹۶ بایت (۴ کیلوبایت) هست. این اندازه، مبنای ذخیره‌سازی و خواندن اطلاعاته. 📏

نکته 9:
‏وقتی یه فایل دیتابیس رو باز می‌کنی و اون فایل وجود نداره، SQLite به طور پیش‌فرض یه فایل جدید برات می‌سازه. خیلی دوستانه! 🛠️

نکته 10:
‏رفتار پیش‌فرض حافظه‌ی کش (Cache) اینه که به صورت خصوصی (Private) عمل می‌کنه، یعنی هر اتصال دیتابیس، کش مخصوص به خودش رو داره. 🧠😎


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

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

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

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

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
‏در C#، رابط‌ها (Interfaces) قراردادهایی برای کلاس‌ها تعریف می‌کنند. کلاس‌ها می‌توانند یک یا چند رابط را پیاده‌سازی کنند و ملزم به ارائه پیاده‌سازی برای تمام متدهای تعریف شده در آن رابط هستند. این امر امکان چندریختی را فراهم می‌کند.

‏وراثت (Inheritance) به کلاس‌ها اجازه می‌دهد تا ویژگی‌ها و متدهای کلاس والد را به ارث ببرند و کلاس‌های جدیدی را بر اساس کلاس‌های موجود بسازند. این رویکرد، کد را قابل استفاده مجدد می‌کند.

‏پلی‌مورفیسم (Polymorphism) یا چندشکلی، به اشیاء مختلف اجازه می‌دهد تا به یک پیام یکسان، پاسخ‌های متفاوتی بدهند. این قابلیت از طریق وراثت و رابط‌ها در C# به دست می‌آید و انعطاف‌پذیری بالایی به برنامه‌ها می‌بخشد. 💻🚀

https://t.me/csharp7
🔵 کوییز #سی_شارپ

🟣 موضوع : ‏استفاده از آرایه‌ها و آرایه‌های چندبعدی

🟢 سوال :

‏کدام یک از موارد زیر یک ویژگی آرایه‌ها است؟

گزینه ۱:
‏تغییرپذیری (Mutability)

گزینه ۲:
‏وراثت (Inheritance)

گزینه ۳:
‏اندازه ثابت و دسترسی سریع به عناصر

گزینه ۴:
‏استفاده از حلقه‌های for

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

🟢 توضیح :

‏آرایه‌ها اندازه ثابت و دسترسی سریع به عناصر را فراهم می‌کنند.

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

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

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

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

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
‏در C#، برای بازگرداندن چندین مقدار از یک تابع یا متد، می‌توان از ساختارهای struct یا tuple استفاده کرد.

‏استفاده از Struct:
‏با تعریف یک struct، می‌توانید چندین فیلد را در یک نوع واحد گروه‌بندی کرده و آن struct را از متد بازگردانید.

public struct PointInfo
{
public int X;
public int Y;
public string Label;
}

public PointInfo GetPointData()
{
return new PointInfo { X = 10, Y = 20, Label = "Start" };
}

‏// مثال استفاده:
PointInfo data = GetPointData();
Console.WriteLine($"X: {data.X}, Y: {data.Y}, Label: {data.Label}");


‏استفاده از Tuple:
Tuple یک راه ساده‌تر و بدون نیاز به تعریف نوع جدید برای گروه‌بندی چندین مقدار است. از نسخه ۷ به بعد C#، ValueTuple (که با سینتکس (int, int, string) نمایش داده می‌شود) برای کارایی بهتر توصیه می‌شود.

public (int X, int Y, string Label) GetPointTuple()
{
return (10, 20, "Start");
}

‏// مثال استفاده:
var tupleData = GetPointTuple();
Console.WriteLine($"X: {tupleData.X}, Y: {tupleData.Y}, Label: {tupleData.Label}");


‏هر دو روش به شما امکان می‌دهند تا به صورت سازمان‌یافته چندین نتیجه را از یک متد دریافت کنید. 🚀💡

https://t.me/csharp7
‏ExceptionDispatchInfo قابلیتی در C# است که به شما اجازه می‌دهد یک Exception را در یک thread دیگر، بدون از دست دادن Stack Trace اصلی، مجدداً throw کنید. این کار برای مدیریت خطاها در عملیات Async یا Parallel بسیار مفید است.

‏تصور کنید یک Task با خطا مواجه می‌شود؛ ExceptionDispatchInfo به شما کمک می‌کند دقیقاً همان خطا را با همان اطلاعات، در thread اصلی دریافت کنید. ⚙️

‏به این ترتیب، Debug کردن بسیار آسان‌تر می‌شود! 🐛

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
🎯 تفاوت Mac Catalyst و Native macOS در .NET چیه؟ 🤔

‏Catalyst یه پل ارتباطیه! اپ iOS/iPadOS رو به macOS میاره. 🍎 سریع و آسونه، اما ممکنه بهینگی Native رو نداشته باشه.

‏اپ Native macOS اختصاصاً برای سیستم‌عامل macOS ساخته شده. 💻 عملکرد بهتری داره، اما توسعه‌اش زمان‌برتره.

‏انتخاب با شماست! سرعت یا قدرت؟ 💪
#dotnet #maccatalyst #macos

https://t.me/dotnet7ir
‏حلقه foreach در C# ابزاری قدرتمند برای پیمایش و دسترسی به عناصر مجموعه‌هاست. این حلقه به طور خودکار بر روی تمام اعضای یک مجموعه، از جمله آرایه‌ها، لیست‌ها، دیکشنری‌ها و سایر انواع قابل پیمایش (IEnumerable) عمل می‌کند.

‏نکته کلیدی foreach این است که نیازی به مدیریت اندیس یا شمارنده ندارید. این حلقه به طور خودکار عنصر فعلی را در اختیار شما قرار می‌دهد.

‏مثال استفاده با یک آرایه:
‏string[] names = { "علی", "رضا", "مریم" };
foreach (string name in names)
{
Console.WriteLine(name);
}


‏و با یک لیست:
List<int> numbers = new List<int> { 10, 20, 30 };
foreach (int number in numbers)
{
Console.WriteLine(number * 2);
}


foreach همچنین با دیکشنری‌ها کار می‌کند و به شما امکان می‌دهد به کلیدها و مقادیر دسترسی داشته باشید:
Dictionary<string, int> ages = new Dictionary<string, int>
{
‏ { "علی", 30 },
‏ { "سارا", 25 }
};

foreach (KeyValuePair<string, int> entry in ages)
{
‏ Console.WriteLine($"نام: {entry.Key}, سن: {entry.Value}");
}




https://t.me/csharp7
‏EF Core 9 و 10 خبرهای خوبی براتون داره! 😎

‏Batching تو آپدیت و حذف رکوردها خیلی بهتر شده. دیگه خبری از N تا دستور جداگانه نیست!

‏فرض کن 1000 تا رکورد رو میخوای آپدیت کنی، قبلا 1000 تا دستور SQL اجرا میشد 🤯، اما حالا EF Core اینا رو دسته بندی میکنه و توی چندتا دستور خلاصش میکنه 🚀.

‏نتیجه؟ سرعت بیشتر و فشار کمتر روی دیتابیس! 👍
#EFCore #dotnet #batching

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

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

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

https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
💡 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏معماری SQLite

نکته 1:
‏معماری SQLite طوری طراحی شده که کل دیتابیس فقط یه فایل روی دیسکه؛ ساده و جمع‌وجور 💡

نکته 2:
‏هسته SQLite یه موتور SQL کامل داره که بدون نیاز به سرویس جداگانه اجرا می‌شه 🔥

نکته 3:
‏پردازش کوئری‌ها توی خود برنامه انجام می‌شه چون SQLite کتابخونه‌ست نه سرور مستقل 📚

نکته 4:
‏لایه ذخیره‌سازی SQLite از ساختار صفحات (Pages) استفاده می‌کنه تا سریع و کارآمد داده‌ها رو بخونه 📄

نکته 5:
‏کل معماریش روی اصول ACID بنا شده، یعنی تراکنش‌ها امن و قابل اعتمادن 🔒💡

نکته 6:
‏SQLite از B-Tree برای ذخیره‌سازی جداول و ایندکس‌ها استفاده می‌کنه؛ سریع و دقیق 📊

نکته 7:
‏مدل قفل‌گذاریش مبتنی بر فایل‌ـه، پس برای هم‌زمانی سبک خوبه ولی برای کاربرهای زیاد محدود می‌شه ⚠️🔥

نکته 8:
‏به خاطر معماری کتابخانه‌ای، می‌تونی SQLite رو داخل هر برنامه‌ای جاسازی کنی بدون نیاز به تنظیمات اضافه 🧩💡

نکته 9:
‏SQLite حافظه رو هوشمندانه مصرف می‌کنه و حتی روی سیستم‌های ضعیف هم خیلی خوب اجرا می‌شه 🚀

نکته 10:
‏معماری ساده ولی حرفه‌ایش باعث شده بیش از ۳ میلیارد دستگاه ازش استفاده کنن؛ قابل‌اعتماد و امتحان‌پس‌داده 🙌🔥


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

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

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

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

🟣 موضوع : ‏استفاده از enum برای تعریف مجموعه‌ای از ثابت‌ها

🟢 سوال :

‏کدام یک از موارد زیر یک روش برای تعریف مقادیر enum با مقادیر عددی مشخص است؟

گزینه ۱:
public enum MyEnum { A = 1, B = 2 }

گزینه ۲:
public enum MyEnum { A, B }

گزینه ۳:
public enum MyEnum { A = "1", B = "2" }

گزینه ۴:
public enum MyEnum { A = true, B = false }

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

🟢 توضیح :

‏مقادیر enum می‌توانند با مقادیر عددی مشخص تعریف شوند.

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

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

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

آدرس وبسایت:
https://Tutorial24.ir