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

آیدی ادمین:
@ma_limbs
Download Telegram
‏C#‎ این قابلیت رو داره که از SIMD intrinsics استفاده کنی. 🚀

‏با استفاده از `Vector128<T>` و `Vector256<T>` میتونی عملیات برداری رو روی داده‌ها انجام بدی. این یعنی پردازش موازی چند مقدار در یک سیکل CPU. 🧮

‏از نسخه AVX10.2 به بعد، C#‎ از دستورالعمل‌های پیشرفته‌تری هم پشتیبانی می‌کنه که باعث میشه محاسبات سنگین مثل پردازش تصویر یا محاسبات علمی خیلی سریع‌تر انجام بشن.

https://t.me/csharp7
🔵 کوییز #مفاهیم_کلی_برنامه_نویسی

🟣 موضوع : ‏طراحی الگوریتم: چگونگی تبدیل یک مسأله به الگوریتم

🟢 سوال :

‏الگوریتم (Algorithm) چیست؟

گزینه ۱:
‏یک زبان برنامه‌نویسی

گزینه ۲:
‏یک مجموعه دستورالعمل برای حل یک مسأله

گزینه ۳:
‏یک پایگاه داده

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



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

🟢 توضیح :

‏الگوریتم (Algorithm) یک مجموعه دستورالعمل برای حل یک مسأله است.

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

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

آدرس کانال اصلی :
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#، رابط‌ها (Interfaces) قراردادهایی برای رفتار کلاس‌ها تعریف می‌کنند. یک رابط شامل متدهایی است که کلاس پیاده‌کننده موظف به ارائه بدنه آن‌هاست.

‏برای تعریف یک رابط، از کلمه کلیدی `interface` استفاده می‌شود. به عنوان مثال:

```csharp
interface ILogger
{
void LogMessage(string message);
}
```

‏کلاسی که می‌خواهد این قرارداد را پیاده‌سازی کند، از علامت `:` و نام رابط استفاده می‌کند:

```csharp
class FileLogger : ILogger
{
public void LogMessage(string message)
{
‏ // کد مربوط به ثبت پیام در فایل
Console.WriteLine($"Logging to file: {message}");
}
}
```

‏خاصیت چندرابطی (Multiple Inheritance of Type) در C# به یک کلاس اجازه می‌دهد تا چندین رابط را پیاده‌سازی کند. این امکان، انعطاف‌پذیری بالایی در طراحی نرم‌افزار فراهم می‌آورد.

💡 📄

https://t.me/csharp7
‏متدهای گسترشی استاتیک (Static Extension Methods) در C# به شما اجازه می‌دهند تا متدهایی را به تایپ‌های موجود اضافه کنید بدون اینکه نیاز به تغییر کد منبع آن تایپ داشته باشید.

📌 این متدها باید در یک کلاس استاتیک تعریف شوند و با کلمه کلیدی `this` در پارامتر اول، نوعی که می‌خواهید گسترش دهید را مشخص کنند.

💡 به این ترتیب، می‌توانید یک متد جدید را به عنوان بخشی از API یک کلاس در نظر بگیرید.

https://t.me/csharp7
‏`ref struct`ها در C# برای بهبود کارایی در سناریوهایی با طول عمر کوتاه استفاده می‌شوند. ⏱️ این ساختارها نمی‌توانند:

‏* در heap قرار گیرند 📦
‏* به عنوان نوع آرایه استفاده شوند 🔢
‏* در کلاس‌ها تعریف شوند 🏢

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

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
‏تفاوت Local functions و Lambda expressions در C# 🤔

‏Local functions توابعی هستند که داخل یک متد تعریف میشن. مثل متدهای معمولی، اسم دارن و میشه بارها صداشون زد. اما Lambda expressions توابع بی‌نامی هستن که معمولاً برای کارهای کوتاه و سریع استفاده میشن.

‏Local functions خوانایی کد رو بالا می‌برن و برای منطق پیچیده‌تر مناسب‌ترن. Lambda expressions برای LINQ و event handlers خیلی کاربردی‌ان.

انتخاب بین این دو بستگی به نیاز و خوانایی کد داره.

https://t.me/csharp7
‏صف‌ها (Queues) در C# ابزاری قدرتمند برای مدیریت ترتیب ورود و خروج داده‌ها هستند. این ساختار داده، که از اصل FIFO (First-In, First-Out) پیروی می‌کند، در سناریوهای مختلفی کاربرد دارد.

‏مدیریت وظایف (Task Management):
‏در سیستم‌هایی که وظایف باید به ترتیب دریافت و پردازش شوند، صف‌ها نقش کلیدی ایفا می‌کنند. به عنوان مثال، در یک سیستم صف چاپ، هر سند چاپی که ارسال می‌شود، به صف اضافه شده و پس از اتمام وظیفه قبلی، چاپ می‌گردد.

using System;
using System.Collections.Generic;

public class TaskQueueExample
{
public static void Main(string[] args)
{
Queue<string> taskQueue = new Queue<string>();

‏ taskQueue.Enqueue("چاپ سند A");
‏ taskQueue.Enqueue("پردازش گزارش B");
‏ taskQueue.Enqueue("ارسال ایمیل C");

‏ Console.WriteLine("شروع پردازش وظایف:");
while (taskQueue.Count > 0)
{
string currentTask = taskQueue.Dequeue();
‏ Console.WriteLine($"- در حال انجام: {currentTask}");
‏ // شبیه‌سازی انجام وظیفه
System.Threading.Thread.Sleep(500);
}
‏ Console.WriteLine("تمام وظایف انجام شد.");
}
}


‏پردازش درخواست‌ها (Request Processing):
‏در برنامه‌های وب یا سرویس‌های شبکه‌ای، درخواست‌های ورودی ممکن است با سرعتی بیش از توانایی پردازش سرور دریافت شوند. استفاده از صف برای نگهداری موقت این درخواست‌ها و پردازش آن‌ها به صورت منظم، از overload شدن سیستم جلوگیری می‌کند.

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

using System;
using System.Collections.Generic;

public class CustomerQueueSimulation
{
public static void Main(string[] args)
{
Queue<string> customerLine = new Queue<string>();

‏ customerLine.Enqueue("مشتری 1");
‏ customerLine.Enqueue("مشتری 2");
‏ customerLine.Enqueue("مشتری 3");

‏ Console.WriteLine($"تعداد مشتریان در صف: {customerLine.Count}");

string firstCustomer = customerLine.Dequeue();
‏ Console.WriteLine($"اولین مشتری وارد شده: {firstCustomer}");
‏ Console.WriteLine($"تعداد مشتریان باقی‌مانده: {customerLine.Count}");

‏ customerLine.Enqueue("مشتری 4");
‏ Console.WriteLine($"مشتری جدید اضافه شد. تعداد مشتریان: {customerLine.Count}");
}
}

‏استفاده از Queue<T> در C#، امکان مدیریت کارآمد داده‌ها را در سناریوهای مبتنی بر صف فراهم می‌آورد. 🚀📋

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
‏تفاوت Analyzer و Generator در C# 🤔

‏Analyzer کد شما رو تحلیل میکنه و مشکلات رو گزارش میده. مثل یه ویراستار دائم! 🧐

‏Generator اما کد جدید تولید میکنه. مثلاً میتونه boilerplate code رو براتون بسازه. 🛠️

‏به زبان ساده، اولی ایراد میگیره، دومی کد میزنه!

https://t.me/csharp7
‏در ASP.NET Core، برای تست کردن پایگاه داده و تعامل با آن، می‌توانید از روش‌های مختلفی استفاده کنید. یکی از رایج‌ترین رویکردها، استفاده از Entity Framework Core است که امکان تعامل با پایگاه داده را به صورت شیءگرا فراهم می‌کند.

‏برای تست، می‌توانید از پایگاه داده‌های سبک مانند SQLite در حافظه (in-memory) استفاده کنید. این کار سرعت تست را به شدت افزایش می‌دهد و نیازی به راه‌اندازی یک سرور پایگاه داده واقعی ندارد.

‏هنگام تست، اطمینان حاصل کنید که عملیات CRUD (Create, Read, Update, Delete) به درستی انجام می‌شوند. همچنین، تست کردن کوئری‌های پیچیده‌تر و اطمینان از صحت نتایج آن‌ها بسیار مهم است.

‏برای مثال، در یک تست واحد، می‌توانید یک نمونه از DbContext خود را با استفاده از یک پایگاه داده SQLite در حافظه پیکربندی کنید:

‏// مثال با SQLite in-memory
var options = new DbContextOptionsBuilder<MyDbContext>()
.UseSqlite("DataSource=:memory:")
.Options;

using (var context = new MyDbContext(options))
{
context.Database.OpenConnection();
context.Database.EnsureCreated();
// ...
‏برای اضافه کردن متن به انتهای یک فایل موجود در C# و جلوگیری از بازنویسی محتوای قبلی، می‌توانید از کلاس StreamWriter به همراه پارامتر append: true استفاده کنید.

using System;
using System.IO;

public class FileAppendExample
{
public static void Main(string[] args)
{
string filePath = "myFile.txt";
‏ string textToAdd = "این متن به انتهای فایل اضافه می‌شود.\n";

‏ // استفاده از StreamWriter با append: true
using (StreamWriter sw = new StreamWriter(filePath, append: true))
{
sw.Write(textToAdd);
}

‏ Console.WriteLine($"متن با موفقیت به انتهای فایل {filePath} اضافه شد.");
}
}


‏با این روش، هر بار که کد اجرا شود، متن جدید به انتهای فایل اضافه خواهد شد بدون اینکه اطلاعات قبلی از بین برود. 📝💾

https://t.me/csharp7
🔵 کوییز #مفاهیم_کلی_برنامه_نویسی

🟣 موضوع : ‏انواع زبان‌های برنامه‌نویسی: تفکیک بر اساس سطح، کاربرد، و سبک

🟢 سوال :

‏کدام یک از موارد زیر یک زبان برنامه‌نویسی اسکریپتی (Scripting) است؟

گزینه ۱:
‏سی (C)

گزینه ۲:
‏جاوا اسکریپت (JavaScript)

گزینه ۳:
‏اسمبلی (Assembly)

گزینه ۴:
‏زبان ماشین (Machine Code)



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

🟢 توضیح :

‏جاوا اسکریپت (JavaScript) یک زبان برنامه‌نویسی اسکریپتی (Scripting) است.

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

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

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

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

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

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

‏- ref: قبل از ارسال متغیر به متد، باید مقداردهی اولیه شده باشد. متد می‌تواند مقدار آن را بخواند و تغییر دهد.
‏- out: متغیر لزوماً نباید قبل از ارسال مقداردهی اولیه شده باشد. اما متد باید قبل از بازگشت، به آن مقداردهی کند.

‏مثال مقایسه‌ای:

‏فرض کنید متدی داریم که می‌خواهد دو عدد را با هم جمع کند و نتیجه را در یک متغیر دیگر قرار دهد.

‏// استفاده از ref
void AddWithRef(ref int a, int b)
{
‏ a = a + b; // خواندن و تغییر مقدار a
}

int num1 = 5;
int num2 = 10;
AddWithRef(ref num1, num2);
‏// num1 اکنون 15 است


‏// استفاده از out
void DivideAndGetRemainder(int dividend, int divisor, out int quotient, out int remainder)
{
quotient = dividend / divisor;
remainder = dividend % divisor;
‏ // quotient و remainder باید مقداردهی شوند
}

int resultQuotient;
int resultRemainder;
DivideAndGetRemainder(20, 3, out resultQuotient, out resultRemainder);
‏// resultQuotient اکنون 6 و resultRemainder اکنون 2 است


‏در سناریوی ref، شما می‌خواهید متغیری که از قبل مقداری دارد را به متد بفرستید تا آن مقدار خوانده شده و سپس تغییر کند. در سناریوی out، شما اغلب به دنبال دریافت یک یا چند مقدار جدید از متد هستید که متد مسئول مقداردهی اولیه آن‌هاست. 💡
‏نکته: استفاده صحیح از ref و out می‌تواند خوانایی و کارایی کد شما را بهبود بخشد.

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

🟣 موضوع : ‏استفاده از الگوهای طراحی (Design Patterns) در C#

🟢 سوال :

‏کدام یک از الگوهای طراحی زیر برای ایجاد یک رابط یکپارچه برای یک زیرسیستم پیچیده استفاده می‌شود؟

گزینه ۱:
‏الگوی Adapter

گزینه ۲:
‏الگوی Bridge

گزینه ۳:
‏الگوی Facade

گزینه ۴:
‏الگوی Decorator

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

🟢 توضیح :

‏الگوی Facade برای ایجاد یک رابط یکپارچه برای یک زیرسیستم پیچیده استفاده می‌شود.

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

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

آدرس کانال اصلی :
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
‏در سی شارپ 8 و نسخه‌های بالاتر، امکان تعریف اعضای ایستا (static members) در رابط‌ها (interfaces) معرفی شده است. این قابلیت به شما اجازه می‌دهد تا متدهایی با پیاده‌سازی پیش‌فرض را مستقیماً در رابط تعریف کنید، بدون اینکه نیاز به ارث‌بری از کلاس دیگری داشته باشید.

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

public interface ICalculator
{
static double Add(double a, double b)
{
return a + b;
}

static double Subtract(double a, double b)
{
return a - b;
}

‏ // اعضای غیر ایستا همچنان می‌توانند در رابط‌ها تعریف شوند
double Calculate(double value);
}


‏با این تغییر، کلاس‌هایی که رابط ICalculator را پیاده‌سازی می‌کنند، به متدهای ایستا Add و Subtract مستقیماً از طریق نام رابط دسترسی خواهند داشت:

public class SimpleAdder : ICalculator
{
public double Calculate(double value)
{
‏ return ICalculator.Add(value, 5); // استفاده از متد ایستا از رابط
}
}

‏// مثال استفاده
var adder = new SimpleAdder();
‏Console.WriteLine(adder.Calculate(10)); // خروجی: 15

‏Console.WriteLine(ICalculator.Subtract(20, 7)); // خروجی: 13


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

https://t.me/csharp7
‏در زبان C#، کلیدواژه‌هایی مانند var، dynamic، async، await، yield و قابلیت deconstruction در نسخه‌های مختلف به تکامل زبان افزوده‌ شده‌اند و قابلیت‌های برنامه‌نویسی را گسترش داده‌اند.

‏- var: به کامپایلر اجازه می‌دهد تا نوع متغیر را در زمان کامپایل تشخیص دهد، که خوانایی کد را بهبود می‌بخشد.
‏- dynamic: امکان کار با اشیاء با نوع در زمان اجرا را فراهم می‌کند و انعطاف‌پذیری بیشتری در مواجهه با ساختارهای داده‌ای ناآشنا یا پویا می‌دهد.
‏- async و await: این دو کلیدواژه پایه و اساس برنامه‌نویسی ناهمگام (asynchronous) در C# هستند که امکان اجرای عملیات طولانی‌مدت را بدون مسدود کردن thread اصلی فراهم می‌کنند.
‏- yield: در متدها یا get-accessorsهای iterator استفاده می‌شود تا امکان تولید دنباله‌ای از مقادیر را به صورت lazy (تنبل) فراهم کند، که برای کار با مجموعه‌های بزرگ بسیار کارآمد است.
‏- Deconstruction: این قابلیت به شما اجازه می‌دهد تا مقادیر یک شیء یا یک tuple را به متغیرهای جداگانه در یک خط اختصاص دهید.



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

🟣 موضوع : ‏معرفی و کاربرد همکاران (Delegates)

🟢 سوال :

‏کدام یک از موارد زیر یک کاربرد پیشرفته Delegates است؟

گزینه ۱:
‏مدیریت حافظه

گزینه ۲:
‏ایجاد سیستم‌های plugin و extensibility

گزینه ۳:
‏محاسبات ریاضی ساده

گزینه ۴:
‏ایجاد رابط کاربری استاتیک

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

🟢 توضیح :

‏Delegates برای ایجاد سیستم‌های plugin و extensibility استفاده می‌شوند.

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

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

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

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