آموزش ویدیویی C# و .NET
Статистика* پیشنهادات، تبلیغات و تبادل و ... : @ma_limbs * تعرفه تبلیغات: https://t.me/+w-o6dHW5O31jMWNk
- Последний пост
- 14 авг.
- Последнее чтение
- 15 авг.
- Постов за неделю
- 18
- Всего постов
- 149
- Тип
- открытый
- Язык
- персидский
- Категория
- Образование
- В каталоге с
- 12 авг.
- 1/24сутки в ленте
- 1
- 1/48двое суток
- 1
- 1/72трое суток
- 1
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید: 🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... : https://t.me/addlist/hK74E7joz0ZiOGY0 https://t.me/addlist/hK74E7joz0ZiOGY0 https://t.me/addlist/hK74E7joz0ZiOGY0
🔵 کوییز #سی_شارپ 🟣 موضوع : کپسولهسازی (Encapsulation) و حفاظت از دادهها 🟢 سوال : کدام یک از موارد زیر یک روش برای پیادهسازی کپسولهسازی در C# است؟ گزینه ۱: استفاده از متغیرهای سراسری گزینه ۲: استفاده از سطوح دسترسی (access modifiers) گزینه ۳: استفاده از توابع بازگشتی گزینه ۴: استفاده از کلاسهای استاتیک 🔵 گزینه صحیح: 2 🟢 توضیح : سطوح دسترسی (public, private, protected) برای پیادهسازی کپسولهسازی استفاده میشوند. ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ لطفا ما رو به دیگران هم معرفی کنید... آدرس کانال اصلی : https://t.me/Tu_24 آدرس وبسایت: https://Tutorial24.ir
برای دریافت ورودی از کاربر در C#، از متد Console.ReadLine() استفاده میشود. این متد، ورودی کاربر را به صورت یک رشته (string) برمیگرداند. string userInput = Console.ReadLine(); Console.WriteLine("شما وارد کردید: " + userInput); اگر نیاز به ورودی عددی دارید، باید رشته دریافتی را به نوع داده مورد نظر تبدیل کنید. برای مثال، تبدیل به عدد صحیح (int): string inputString = Console.ReadLine(); int number = int.Parse(inputString); Console.WriteLine("عدد وارد شده: " + number); یا با استفاده از Convert.ToInt32(): string inputString = Console.ReadLine(); int number = Convert.ToInt32(inputString); Console.WriteLine("عدد وارد شده: " + number); توجه داشته باشید که در صورت عدم تطابق نوع ورودی با نوع تبدیل، خطای FormatException رخ خواهد داد. ⚠️ برای جلوگیری از این خطا، میتوانید از متدهایی مانند int.TryParse() استفاده کنید که در صورت عدم موفقیت، خطا ایجاد نمیکند. 💡 https://t.me/csharp7
برای اعمال فیلترینگ و جستجوی پیشرفته در مجموعههای مرتب شده در C#، میتوان از متدهای LINQ استفاده کرد. این متدها امکان جستجوی کارآمد را با استفاده از عبارات لامبدا فراهم میکنند. به عنوان مثال، برای فیلتر کردن لیستی از اعداد و یافتن اعدادی که بزرگتر از یک مقدار مشخص هستند: List<int> numbers = new List<int> { 1, 5, 2, 8, 3, 9, 4, 7, 6 }; numbers.Sort(); // مرتبسازی مجموعه var filteredNumbers = numbers.Where(n => n > 5); foreach (var number in filteredNumbers) { Console.WriteLine(number); } برای جستجوی اولین عنصری که شرط خاصی را برآورده میکند، میتوان از متد FirstOrDefault() استفاده کرد: var firstEven = numbers.FirstOrDefault(n => n % 2 == 0); if (firstEven != 0) { Console.WriteLine($"اولین عدد زوج: {firstEven}"); } همچنین، برای یافتن عنصر خاصی با استفاده از مقدار آن (پس از مرتبسازی)، متد BinarySearch کارایی بالایی دارد: int index = numbers.BinarySearch(7); if (index >= 0) { Console.WriteLine($"عدد 7 در اندیس {index} یافت شد."); } این روشها به شما اجازه میدهند تا با سرعت و دقت بالا، اطلاعات مورد نیاز خود را از مجموعههای مرتب شده استخراج کنید. 🚀✨ https://t.me/csharp7
💻 آموزش Blazor Desktop: کد بزن، دسکتاپ تحویل بگیر! 🤔 کدوم رو انتخاب کنم؟ Electron یا WebView2؟ ✅ Electron: قدرت و انعطافپذیری بیشتر، حجم بالاتر. ✅ WebView2: سبکتر، مبتنی بر مرورگر Edge، یکپارچهتر با ویندوز. 🚀 هر دو روش بهت اجازه میدن با #Blazor اپلیکیشن دسکتاپ بسازی. انتخاب با خودته! #dotnet #desktop #tutorial https://t.me/dotnet7ir
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید: 🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... : https://t.me/addlist/hK74E7joz0ZiOGY0 https://t.me/addlist/hK74E7joz0ZiOGY0 https://t.me/addlist/hK74E7joz0ZiOGY0
در ASP.NET Core، Exception Handling Middleware ابزاری قدرتمند برای مدیریت متمرکز خطاها و استثناها در طول چرخه درخواست و پاسخ است. این میانافزار با قرار گرفتن در pipeline درخواست، قادر است استثناهای رخ داده در بخشهای بعدی pipeline را شناسایی کرده و اقدامات مناسبی را انجام دهد. هدف اصلی این میانافزار، جلوگیری از ارسال پاسخهای خطای خام و ناخواسته به کلاینت و ارائه یک پاسخ استاندارد و کاربرپسند است. به طور پیشفرض، ASP.NET Core از یک پیادهسازی داخلی برای این منظور استفاده میکند. نحوه عملکرد: هنگامی که یک استثنا در طول پردازش درخواست رخ میدهد و توسط هیچ بخش دیگری از برنامه مدیریت نمیشود، Exception Handling Middleware آن را دریافت میکند. سپس، بر اساس تنظیمات و نوع خطا، میتواند کارهای زیر را انجام دهد: ثبت خطا: اطلاعات مربوط به استثنا را در لاگهای برنامه ثبت کند. تولید پاسخ خطا: یک پاسخ HTTP با کد وضعیت مناسب (مانند 500 Internal Server Error) و یک بدنه (body) استاندارد ایجاد کند. این بدنه میتواند شامل پیام خطای کلی، اطلاعات فنی (در صورت نیاز و با رعایت ملاحظات امنیتی)، یا حتی یک صفحه خطای سفارشی باشد. هدایت به صفحه خطا: کاربر را به یک صفحه خطای از پیش تعریف شده هدایت کند. نکات کلیدی: این میانافزار معمولاً در ابتدای pipeline قرار میگیرد تا بتواند استثناهای رخ داده در تمام مراحل بعدی را پوشش دهد. میتوانید با استفاده از `app.UseExceptionHandler()` این میانافزار را به pipeline اضافه کنید. برای سفارشیسازی رفتار این میانافزار، میتوانید از پارامترهایی مانند ExceptionHandlerOptions استفاده کرده و یک RequestDelegate سفارشی برای مدیریت خطا تعریف کنید. این delegate میتواند منطق پیچیدهتری مانند بررسی نوع استثنا، تولید پاسخهای متفاوت برای خطاهای مختلف، یا حتی اجرای عملیات بازیابی را پیادهسازی کند. در محیطهای توسعه، اغلب ترجیح داده میشود که اطلاعات بیشتری از خطا نمایش داده شود تا اشکالزدایی آسانتر شود، اما در محیطهای پروداکشن، نمایش جزئیات فنی به کلاینت توصیه نمیشود. `Exception Handling Middleware` این امکان را فراهم میکند که این رفتار را بر اساس محیط برنامه تنظیم کنید. ⚙️ استفاده صحیح از این میانافزار به بهبود امنیت و تجربه کاربری برنامه شما کمک شایانی میکند. 🛡️ // اضافه کردن Exception Handling Middleware به pipeline app.UseExceptionHandler("/Error"); // هدایت به صفحه /Error در صورت بروز خطا // مثال ساده از یک صفحه خطا (در یک کنترلر یا صفحه Razor) // [Route("[controller]")] // public class ErrorController : Controller // { // [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] // public IActionResult Error() // { // var exceptionFeature = HttpContext.Features.Get<IExceptionHandlerPathFeature>(); // var exception = exceptionFeature?.Error; // // در اینجا می توانید منطق سفارشی برای نمایش خطا داشته باشید // return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); // } // } https://t.me/csharp7
در C#، متغیرهای محلی (Local variables) در داخل متدها تعریف میشوند و عمر آنها محدود به اجرای همان متد است. محدوده آنها نیز فقط در همان بلوک کد (مانند داخل یک حلقه یا شرط) است. در مقابل، متغیرهای عضو کلاس (Class members یا Fields) در خارج از متدها و در داخل کلاس تعریف میشوند. عمر آنها تا زمانی است که شیء کلاس وجود دارد و محدوده آنها در کل کلاس قابل دسترسی است. به طور خلاصه: - متغیر محلی: عمر و محدوده محدود به متد. - متغیر عضو کلاس: عمر و محدوده وابسته به شیء کلاس. این تفاوت در مدیریت حافظه و دسترسی به دادهها بسیار کلیدی است. 🧠💡 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
در Minimal API فیلترها، قبل یا بعد از هندلر اصلی اجرا میشن. ⚙️ میشه لاگین، اعتبارسنجی، تغییر درخواست یا پاسخ رو باهاشون انجام داد. 🔑 فیلترها مثل یه خط لوله (Pipeline) عمل میکنن و ترتیب اجراشون مهمه. ⏳ https://t.me/csharp7
عملگرهای مجموعهای در LINQ به شما امکان میدهند تا عملیات منطقی روی مجموعههای داده انجام دهید. این عملگرها شامل Union، Intersect، Except و Distinct هستند. Union: این عملگر تمام عناصر منحصر به فرد از دو یا چند مجموعه را برمیگرداند. به عبارت دیگر، عناصر تکراری را حذف میکند. var list1 = new List<int> { 1, 2, 3, 4 }; var list2 = new List<int> { 3, 4, 5, 6 }; var unionResult = list1.Union(list2); // { 1, 2, 3, 4, 5, 6 } Intersect: این عملگر عناصری را که در هر دو مجموعه وجود دارند، برمیگرداند. var list1 = new List<int> { 1, 2, 3, 4 }; var list2 = new List<int> { 3, 4, 5, 6 }; var intersectResult = list1.Intersect(list2); // { 3, 4 } Except: این عملگر عناصری را که در مجموعه اول وجود دارند اما در مجموعه دوم وجود ندارند، برمیگرداند. var list1 = new List<int> { 1, 2, 3, 4 }; var list2 = new List<int> { 3, 4, 5, 6 }; var exceptResult = list1.Except(list2); // { 1, 2 } Distinct: این عملگر تمام عناصر منحصر به فرد را از یک مجموعه برمیگرداند و موارد تکراری را حذف میکند. var list = new List<int> { 1, 2, 2, 3, 4, 4, 4, 5 }; var distinctResult = list.Distinct(); // { 1, 2, 3, 4, 5 } این عملگرها ابزارهای قدرتمندی برای مقایسه و ترکیب دادهها در C# هستند. 🚀💡 https://t.me/csharp7
قابلیت Compile-time reflection در C# محدوده! 🧐 برخلاف reflection در زمان اجرا (Runtime)، در زمان کامپایل (Compile-time) فقط به متادیتاهای در دسترس در همان زمان دسترسی داری. یعنی نمیشه اطلاعات اسمبلیهای خارجی رو بررسی کرد. این محدودیت به دلایل بهینهسازی و جلوگیری از پیچیدگیهای غیرضروری در فرآیند کامپایل اعمال شده. ⚙️ به عبارت دیگه، Compile-time reflection بیشتر برای بررسی attributeها و انواع داده در کد فعلی کاربرد داره. 💡 https://t.me/csharp7
دانستنی: کامپایلر #C میتواند کدها را مستقیماً به کد Native پلتفرمهای iOS و Android تبدیل کند. 📱🤖 این قابلیت که با عنوان MAUI AOT (Ahead-of-Time Compilation) شناخته میشود، باعث بهبود چشمگیر در عملکرد و سرعت اجرای برنامهها میشود. 💪 دیگر نیازی به تفسیر کدها در زمان اجرا نیست! https://t.me/csharp7
🔵 Eclipse - Task Management 🟢 کیفیت : متوسط 🔴 توجه کنید این ویدیو با کیفیت متوسط می باشد. طی روزهای آینده نسخه های متفاوت با کیفیت بالاتر یا کم حجم تر از این نسخه در کانال قرار داده خواهد شد. 🟣 Eclipse 🟢 زبان آموزش: انگلیسی 🟣 دوره آموزش Eclipse ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ لطفا ما رو به دیگران هم معرفی کنید... آدرس کانال اصلی : https://t.me/Tu_24 آدرس وبسایت: https://Tutorial24.ir
🔵 دوست داری برنامه نویس حرفه ای بشی یا مهارت های کامپیوتری خودت رو افزایش بدی؟ با عضویت در لیست تلگرامی زیر در بی نظیر ترین کانال های برنامه نویسی ما عضو شوید: 🟢 پایتون، هوش مصنوعی، یادگیری ماشین، سی ++، سی شارپ، دات نت، نود جی اس، جاوا اسکریپت، شبکه، علم داده، پایگاه داده، sql، nosql ، مهارت های ICDL، سیستم عامل، لینوکس، فتوشاپ، گرافیک، اندروید، جاوا، ساخت اپلیکیشن موبایل، ری اکت، جی کوئری، php و laravel، دروس رشته کامپیوتر، کنکور کامپیوتر و ... عضو لیست جامع شوید: https://t.me/addlist/_UjG99eD_E4zYzhk https://t.me/addlist/_UjG99eD_E4zYzhk https://t.me/addlist/_UjG99eD_E4zYzhk
در زبان C#، کالکشنها ساختارهای دادهای هستند که برای نگهداری مجموعهای از اشیاء به کار میروند. انتخاب نوع مناسب کالکشن بستگی به نیازهای برنامه شما دارد. در ادامه به مقایسهی چند نوع رایج میپردازیم: `List<T>`: یکی از پرکاربردترین کالکشنهاست. انعطافپذیری بالایی دارد و امکان اضافه کردن، حذف کردن و دسترسی به عناصر با استفاده از ایندکس را فراهم میکند. عملکرد خوبی برای عملیات خواندن و نوشتن دارد، اما در صورت حذف یا اضافه کردن عناصر در ابتدای لیست، ممکن است کند شود زیرا عناصر بعدی باید جابجا شوند. ```csharp List<int> numbers = new List<int> { 1, 2, 3 }; numbers.Add(4); int firstElement = numbers[0]; ``` Dictionary<TKey, TValue>: برای نگهداری جفتهای کلید-مقدار ایدهآل است. دسترسی به مقادیر بر اساس کلید بسیار سریع و کارآمد است. هر کلید باید منحصر به فرد باشد. Dictionary<string, int> ages = new Dictionary<string, int>(); ages.Add("Alice", 30); int aliceAge = ages["Alice"]; `HashSet<T>`: برای نگهداری مجموعهای از عناصر منحصر به فرد استفاده میشود. عملیات اضافه کردن، حذف کردن و بررسی وجود یک عنصر در این کالکشن بسیار سریع است (اغلب O(1)). این کالکشن ترتیب خاصی برای عناصر ندارد. ```csharp HashSet<string> uniqueNames = new HashSet<string> { "Bob", "Charlie" }; uniqueNames.Add("David"); bool containsBob = uniqueNames.Contains("Bob"); // True ``` Queue<T>: یک ساختار داده FIFO (First-In, First-Out) است. اولین عنصری که اضافه میشود، اولین عنصری است که حذف میشود. مناسب برای سناریوهایی مانند صف انتظار یا مدیریت وظایف. Queue<string> tasks = new Queue<string>(); tasks.Enqueue("Process A"); string nextTask = tasks.Dequeue(); `Stack<T>`: یک ساختار داده LIFO (Last-In, First-Out) است. آخرین عنصری که اضافه میشود، اولین عنصری است که حذف میشود. برای سناریوهایی مانند بازگشت (undo) یا پیمایش عمقی (depth-first traversal) مفید است. ```csharp Stack<string> history = new Stack<string>(); history.Push("Page 1"); history.Push("Page 2"); string lastVisited = history.Pop(); // Page 2 ``` انتخاب مناسبترین گزینه: اگر نیاز به دسترسی با ایندکس و تغییر اندازه دارید: List<T> اگر نیاز به جستجوی سریع بر اساس کلید دارید: `Dictionary<TKey, TValue>` اگر صرفاً نیاز به مجموعهای از عناصر منحصر به فرد دارید و ترتیب مهم نیست: HashSet<T> اگر به ترتیب ورود و خروج عناصر اهمیت میدهید (اولین وارد، اولین خارج): `Queue<T>` اگر به ترتیب ورود و خروج عناصر اهمیت میدهید (آخرین وارد، اولین خارج): Stack<T> هر یک از این کالکشنها مزایا و معایب خود را دارند و انتخاب صحیح میتواند تأثیر قابل توجهی بر عملکرد برنامه شما داشته باشد. 💡📚 https://t.me/csharp7
`ref struct`ها در C# برای بهبود کارایی در سناریوهایی با طول عمر کوتاه استفاده میشوند. ⏱️ این ساختارها نمیتوانند: * در heap قرار گیرند 📦 * به عنوان نوع آرایه استفاده شوند 🔢 * در کلاسها تعریف شوند 🏢 به دلیل این محدودیتها، از کپی شدن غیرضروری دادهها جلوگیری میکنند و برای عملیات حافظهمحور ایدهآل هستند. ✨ https://t.me/csharp7
C# در Azure Functions به دو صورت In-Process و Isolated قابل استفاده است. ☁️ حالت Isolated به شما اجازه میدهد از نسخههای جدیدتر .NET و وابستگیهای ناسازگار با runtime اصلی Azure Functions استفاده کنید. این یعنی انعطافپذیری بیشتر در انتخاب ابزارها و کتابخانهها! 🛠️ در حالت In-Process، کد شما مستقیماً در فرایند Azure Functions اجرا میشود که محدودیتهایی دارد. https://t.me/csharp7
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید: 🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... : https://t.me/addlist/hK74E7joz0ZiOGY0 https://t.me/addlist/hK74E7joz0ZiOGY0 https://t.me/addlist/hK74E7joz0ZiOGY0
MemoryDiagnoser و DisassemblyDiagnoser دو ابزار قدرتمند در BenchmarkDotNet هستند. 🛠️ اولی میزان حافظه تخصیصیافته رو نشون میده و دومی کد اسمبلی تولید شده توسط JIT رو. با این دوتا، میشه گلوگاههای عملکردی و مصرف حافظه رو دقیقتر شناسایی کرد. 🔍 بهینهسازی کد با دید باز! 💪 https://t.me/csharp7