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

آیدی ادمین:
@ma_limbs
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🔵 آموزش گیت (Git) - مقدمه

🟢 کیفیت : متوسط

🔴 توجه کنید این ویدیو با کیفیت متوسط می باشد. طی روزهای آینده نسخه های متفاوت با کیفیت بالاتر یا کم حجم تر از این نسخه در کانال قرار داده خواهد شد.

🟣 آموزش گیت (Git)

🟢 زبان آموزش: فارسی


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
This media is not supported in your browser
VIEW IN TELEGRAM
🔵 Eclipse - Different IDEs

🟢 کیفیت : متوسط

🔴 توجه کنید این ویدیو با کیفیت متوسط می باشد. طی روزهای آینده نسخه های متفاوت با کیفیت بالاتر یا کم حجم تر از این نسخه در کانال قرار داده خواهد شد.

🟣 Eclipse

🟢 زبان آموزش: انگلیسی

🟣 دوره آموزش Eclipse


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
‏توی #C، مقایسه بر اساس مقدار (Value-based equality) یعنی دو شیء وقتی برابرند که مقدارشون یکسان باشه.

‏اما مقایسه بر اساس ارجاع (Reference equality) یعنی دو شیء فقط وقتی برابرند که دقیقاً یک شیء در حافظه باشند. 🧠

‏متغیرهای value type مثل int و bool مقایسه‌شون value-based هست، اما classها به‌صورت پیش‌فرض reference-based مقایسه میشن.

‏میتونید با override کردن متد Equals() و GetHashCode() برای classها، مقایسه value-based رو پیاده‌سازی کنید. ⚙️

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

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
‏در C#، چندریختی (Polymorphism) یکی از اصول کلیدی برنامه‌نویسی شیءگراست که به اشیاء از کلاس‌های مختلف اجازه می‌دهد تا به یک پیام (متد) به روش‌های متفاوت پاسخ دهند. این قابلیت معمولاً با استفاده از وراثت و متدهای مجازی پیاده‌سازی می‌شود.

‏برای درک بهتر، فرض کنید یک کلاس پایه Shape داریم که شامل متدی به نام Draw است. این متد در کلاس پایه فقط یک پیام کلی نمایش می‌دهد.

public class Shape
{
public virtual void Draw()
{
Console.WriteLine("Drawing a generic shape.");
}
}


‏کلمه کلیدی virtual در متد Draw به کامپایلر می‌گوید که این متد می‌تواند توسط کلاس‌های مشتق شده بازتعریف (Override) شود.

‏حالا کلاس‌های مشتق شده‌ای مانند Circle و Square را در نظر بگیرید که از Shape ارث می‌برند. هر کدام از این کلاس‌ها می‌توانند متد Draw را بازتعریف کنند تا رفتار خاص خود را پیاده‌سازی کنند.

public class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle.");
}
}

public class Square : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a square.");
}
}


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

‏حالا می‌توانیم نمونه‌هایی از این کلاس‌ها را ایجاد کرده و رفتار چندریختی را مشاهده کنیم:

Shape myCircle = new Circle();
Shape mySquare = new Square();
Shape genericShape = new Shape();

‏myCircle.Draw(); // خروجی: Drawing a circle.
‏mySquare.Draw(); // خروجی: Drawing a square.
‏genericShape.Draw(); // خروجی: Drawing a generic shape.


‏در اینجا، حتی اگر متغیر از نوع Shape باشد، متد Draw فراخوانی شده مربوط به کلاس واقعی شیء ( Circle یا Square) است. این قدرت چندریختی را نشان می‌دهد. 💡🌍

https://t.me/csharp7
‏در C#، استفاده از شرط‌های پیشگیری از خطا (Validation) قبل از اجرای کد اصلی، روشی کلیدی برای اطمینان از صحت ورودی‌ها و جلوگیری از بروز خطاهای ناخواسته است. این کار باعث افزایش پایداری و قابلیت اطمینان برنامه می‌شود.

‏به عنوان مثال، قبل از استفاده از یک ورودی کاربر در محاسبات، می‌توانیم بررسی کنیم که آیا این ورودی از نوع عددی مورد انتظار است یا خیر.

string userInput = Console.ReadLine();

if (int.TryParse(userInput, out int number))
{
‏ // کد اصلی که از 'number' استفاده می‌کند
‏ Console.WriteLine($"عدد وارد شده: {number}");
}
else
{
‏ Console.WriteLine("ورودی نامعتبر است. لطفاً یک عدد صحیح وارد کنید.");
}


‏استفاده از متدهایی مانند int.TryParse به جای تبدیل مستقیم با int.Parse، از پرتاب شدن استثنا (Exception) در صورت نامعتبر بودن ورودی جلوگیری می‌کند. این رویکرد، برنامه‌نویسی ایمن‌تر و خواناتری را فراهم می‌آورد. 🛡️

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
‏فشرده‌سازی Requestها تو #aspnetcore 🚀 باعث افزایش سرعت و کاهش مصرف پهنای باند میشه.

‏Middleware مربوط به Decompression اینجاست تا Requestهای فشرده (Gzip, Brotli) رو براتون باز کنه. 📦

‏دیگه نگران هندل کردن دستی فشرده‌سازی نباشید! 👍

```csharp
// Startup.cs
public void Configure(IApplicationBuilder app)
{
app.UseRequestDecompression();
// ...
}
```
‏به همین سادگی!
#dotnet #middleware

https://t.me/dotnet7ir
‏Nullable annotation در constraintهای generic، امکان تعیین nullability نوع T رو فراهم میکنه. 🤔

```csharp
‏// T? : T میتونه nullable باشه
‏// T : T نمیتونه nullable باشه
public class MyClass<T> where T : class? { ... }
```

‏اینطوری میشه مشخص کرد که یک generic type parameter میتونه null بپذیره یا نه. این کار به جلوگیری از خطاهای احتمالی null reference کمک میکنه. 👌

https://t.me/csharp7
‏Thread-safety در C# فقط با lock کردن به دست نمیاد. 🪢

‏`Interlocked` برای عملیات اتمی (atomic) روی متغیرهاست.

‏`Volatile` جلوی بهینه‌سازی‌های کامپایلر و CPU رو می‌گیره تا مقدار متغیر همیشه از حافظه اصلی خونده بشه. 🧠

‏`MemoryBarrier` ترتیب اجرای دستورات رو تضمین می‌کنه. 🚧

‏هر کدوم کاربرد خاص خودشون رو دارن!

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
‏در C#، آرایه‌ها ساختارهایی برای نگهداری مجموعه‌ای از عناصر با نوع داده یکسان هستند.

‏آرایه‌های چندبعدی (Multidimensional Arrays) به صورت جدولی با ابعاد مشخص تعریف می‌شوند. به عنوان مثال، یک آرایه دو بعدی (ماتریس) را می‌توان به این صورت تعریف کرد:

‏int[,] matrix = new int[3, 4]; // یک ماتریس 3x4


‏آرایه‌های پویای (Dynamic Arrays) که در C# با نام List<T> شناخته می‌شوند، قابلیت تغییر اندازه خودکار را دارند و نیازی به تعیین اندازه اولیه ندارند. این ساختار برای مواقعی که تعداد عناصر از قبل مشخص نیست، بسیار کاربردی است.

List<string> names = new List<string>();
names.Add("Ali");
names.Add("Reza");


List<T> از نظر عملکردی شبیه به آرایه‌هاست اما انعطاف‌پذیری بیشتری در مدیریت تعداد عناصر ارائه می‌دهد. 📚

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

🟣 موضوع : ‏استفاده از Dictionary و کلکسیون‌های مشابه

🟢 سوال :

‏کدام یک از موارد زیر یک مثال از کاربرد Dictionary است؟

گزینه ۱:
‏مدیریت پایگاه داده

گزینه ۲:
‏ذخیره و بازیابی تنظیمات پیکربندی برنامه

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

گزینه ۴:
‏ایجاد انیمیشن‌های گرافیکی

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

🟢 توضیح :

‏ذخیره و بازیابی تنظیمات پیکربندی برنامه، یک مثال از کاربرد Dictionary است.

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

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

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

آدرس وبسایت:
https://Tutorial24.ir
‏C# 8.0، WebSocketStream رو معرفی کرد 🔌.

‏با این قابلیت، دیگه لازم نیست کل دیتا رو یکجا دریافت کنین. می‌تونین دیتا رو به صورت تکه تکه (Stream) بخونین و پردازش کنین ⚙️.

‏اینطوری، مصرف حافظه به شدت کم میشه و برای انتقال فایل‌های بزرگ یا دیتاهای real-time خیلی مناسبه 🚀.

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

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

نکته 1:
‏Schema (طرحواره) چیه؟ 🤔 مثل نقشه‌ی ساختمون دیتابیس تو می‌مونه! شامل تعریف تمام جدول‌ها، ایندکس‌ها و نماها (Views) است. 🗺️

نکته 2:
‏SQLite تمام اطلاعات Schema رو تو یه جدول سیستمی خاص به نام sqlite_master ذخیره می‌کنه. این جدول، فهرست محتوای دیتابیسه. 📜💡

نکته 3:
‏اگه می‌خوای Schema یه جدول رو ببینی، از دستور PRAGMA tableinfo(نامجدول) استفاده کن. این دستور جزئیات ستون‌ها رو بهت می‌ده. 🔍

نکته 4:
‏برای تغییر Schema (مثل اضافه کردن ستون جدید)، از دستور ALTER TABLE استفاده می‌کنی. اما این دستور تو SQLite یه کم محدوده. ⚠️

نکته 5:
‏اگه بخوای ستون رو حذف کنی یا نوع داده‌اش رو تغییر بدی، باید دستی یه جدول جدید با Schema مورد نظر بسازی، داده‌ها رو کپی کنی و جدول قدیمی رو حذف کنی. 🛠️🔥

نکته 6:
‏تو می‌تونی با استفاده از sqlite_master ببینی که SQLite از چه دستور CREATE TABLEی برای ساخت جدول تو استفاده کرده. یه جورایی سورس کد ساخت جدول! 📝

نکته 7:
‏برای اینکه مطمئن شی کلیدهای خارجی دارن کار می‌کنن، باید تو Schema تعریف بشن و حتماً با PRAGMA foreign_keys = ON فعال باشن. 🔒

نکته 8:
‏SQLite یه شماره نسخه (Schema Version) تو سربرگ دیتابیس نگه می‌داره. هر بار که Schema رو تغییر می‌دی، این نسخه آپدیت می‌شه. 🔢

نکته 9:
‏مدیریت Schema تو SQLite به دلیل سادگی موتور، یه کم سخته. به همین خاطر، بهتره از ابزارهای مهاجرت (Migration Tools) تو زبان برنامه‌نویسی‌ات استفاده کنی. 💻

نکته 10:
‏مواظب باش مستقیماً جدول sqlite_master رو دستکاری نکنی! این کار می‌تونه ساختار دیتابیس رو خراب کنه. برای تغییرات Schema، فقط از دستورات CREATE, DROP, و ALTER استفاده کن. 💥😎


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
🌱🌱 نکته روز #HTML

🌿🌿 ‏تعریف عنوان با تگ <summary>: تگ <summary> درون تگ <details> قرار می‌گیرد و عنوان یا خلاصه‌ای از محتوای پنهان را ارائه می‌دهد. متن داخل <summary> همیشه قابل مشاهده است و با کلیک بر روی آن، محتوای <details> باز یا بسته می‌شود.

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

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

آدرس کانال اصلی :
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
‏در C#، پارامترهای اختیاری و پارامترهای با مقداردهی پیش‌فرض (Default Parameter Values) هر دو به متدها اجازه می‌دهند بدون نیاز به ارائه مقادیر برای همه پارامترها فراخوانی شوند. با این حال، تفاوت کلیدی در نحوه تعریف و کاربرد آن‌هاست.

‏پارامترهای اختیاری (Optional Parameters) با استفاده از کلمه کلیدی `optional` تعریف می‌شوند و تنها در زبان‌هایی مانند VB.NET وجود دارند، نه مستقیماً در C#. در C#، مفهوم مشابهی با استفاده از پارامترهای با مقداردهی پیش‌فرض پیاده‌سازی می‌شود.

‏پارامترهای با مقداردهی پیش‌فرض (Default Parameter Values) در C# به پارامترها مقداری را اختصاص می‌دهند که اگر هنگام فراخوانی متد، مقداری برای آن پارامتر ارسال نشود، از آن مقدار پیش‌فرض استفاده خواهد شد. این ویژگی باعث انعطاف‌پذیری بیشتر در فراخوانی متدها می‌شود.

‏مثال:
```csharp
void DisplayMessage(string message, int repeatCount = 1)
{
for (int i = 0; i < repeatCount; i++)
{
Console.WriteLine(message);
}
}

‏// فراخوانی با مقدار پیش‌فرض
DisplayMessage("Hello");

‏// فراخوانی با تعیین مقدار
DisplayMessage("World", 3);
```
🔵 کوییز #سی_شارپ

🟣 موضوع : ‏کار با رشته‌ها (String) در C#

🟢 سوال :

‏کدام یک از موارد زیر یک عیب استفاده از کلاس String است؟

گزینه ۱:
‏کاهش کارایی

گزینه ۲:
‏افزایش حجم کد

گزینه ۳:
‏رشته‌ها در C# تغییرناپذیر (immutable) هستند

گزینه ۴:
‏افزایش پیچیدگی کد

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

🟢 توضیح :

‏رشته‌ها در C# تغییرناپذیر (immutable) هستند، به این معنی که پس از ایجاد، نمی‌توان آنها را تغییر داد.

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

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

آدرس کانال اصلی :
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