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

آیدی ادمین:
@ma_limbs
Download Telegram
‏در C#، بلوک catch (Exception ex) یک روش متداول برای مدیریت عمومی استثناها است. این بلوک هر نوع خطایی را که در بلوک try رخ دهد، دریافت و مدیریت می‌کند.

try
{
‏ // کدی که ممکن است باعث بروز خطا شود
int result = 10 / 0;
}
catch (Exception ex)
{
‏ // در اینجا خطای رخ داده را مدیریت می‌کنیم
‏ Console.WriteLine($"یک خطا رخ داد: {ex.Message}");
‏ // ex.StackTrace نیز اطلاعات بیشتری از محل وقوع خطا ارائه می‌دهد
}


‏استفاده از catch (Exception ex) به شما اطمینان می‌دهد که هیچ خطایی بدون پردازش باقی نمی‌ماند. با این حال، معمولاً بهتر است استثناهای خاص‌تر را قبل از Exception عمومی مدیریت کنید تا بتوانید پیام‌های خطای دقیق‌تری ارائه دهید و منطق مناسب‌تری برای هر نوع خطا پیاده‌سازی کنید. 💡

‏این رویکرد به خصوص در مراحل اولیه توسعه یا زمانی که ماهیت دقیق خطا از قبل مشخص نیست، کاربردی است. 🛠️

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

‏انتشار استثنا زمانی اتفاق می‌افتد که یک متد با مشکلی مواجه می‌شود که نمی‌تواند آن را مدیریت کند و مسئولیت مدیریت آن را به فراخواننده واگذار می‌کند. این کار با استفاده از کلمه کلیدی throw انجام می‌شود.

‏مثال:
public void ProcessData(string data)
{
if (string.IsNullOrEmpty(data))
{
‏ throw new ArgumentNullException(nameof(data), "ورودی داده نمی‌تواند خالی باشد.");
}
‏ // پردازش داده‌ها...
}


‏پرتاب مجدد استثنا زمانی کاربرد دارد که یک استثنا در بلوک catch گرفته می‌شود، اما منطقی برای مدیریت کامل آن وجود ندارد و نیاز است تا استثنا به سطوح بالاتر برنامه منتقل شود. در این حالت، نباید استثنا را دوباره با throw new ExceptionType(...) ایجاد کرد، بلکه باید از throw; استفاده کرد تا استثنای اصلی با تمام اطلاعاتش (مانند Stack Trace) پرتاب شود.

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

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

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

https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
‏قابلیت جدید C# 10: تولید کد مقایسه (Equality) توسط کامپایلر ⚙️

‏با استفاده از attribute `[Equality]` در یک record، کامپایلر به طور خودکار متدهای `Equals`, `GetHashCode`, `==`, `!=` را تولید می‌کند. دیگه نیازی به نوشتن boilerplate code نیست! 👌

‏این کار باعث خوانایی بیشتر کد و کاهش احتمال خطا می‌شود. 👌 کد تولید شده، عملکرد بهینه‌ای دارد.

https://t.me/csharp7
💻 تفاوت dotnet script و C# REPL چیه؟

‏dotnet script یه اسکریپت‌رانر C#ـه. یعنی می‌تونی یه فایل ‎.csx رو مستقیم اجرا کنی. برای تست سریع کدها یا اتوماسیون کارهای کوچیک خوبه.

‏C# REPL یه محیط تعاملیه. خط به خط کد می‌زنی و نتیجه رو همون لحظه می‌بینی. برای یادگیری، آزمایش ایده‌ها و دیباگ سریع خیلی کاربردیه. 🧪

‏در واقع، اولی فایل رو اجرا می‌کنه، دومی خط به خط.

https://t.me/csharp7
‏در C#، عملگرهای رابطه‌ای برای مقایسه مقادیر انواع داده‌های مختلف استفاده می‌شوند. این عملگرها نتیجه‌ای بولی (True یا False) برمی‌گردانند.

‏- عملگرهای مقایسه‌ای:
‏ - == (برابر است با)
‏ - != (برابر نیست با)
‏ - > (بزرگتر از)
‏ - < (کوچکتر از)
‏ - >= (بزرگتر یا مساوی)
‏ - <= (کوچکتر یا مساوی)

‏مثال مقایسه انواع داده:

اعداد صحیح (int):
```csharp
int a = 10;
int b = 5;
bool isEqual = (a == b); // False
bool isGreater = (a > b); // True
```

اعداد اعشاری (double):
    double x = 10.5;
double y = 10.5;
bool isNotEqual = (x != y); // False


رشته‌ها (string):
‏ مقایسه رشته‌ها حساس به بزرگی و کوچکی حروف است.
```csharp
string name1 = "Ali";
string name2 = "ali";
‏ bool areSame = (name1 == name2); // False (به دلیل تفاوت در بزرگی و کوچکی حروف)
```
‏ برای مقایسه بدون حساسیت به بزرگی و کوچکی حروف، از متدهایی مانند `Equals` با پارامتر `StringComparison.OrdinalIgnoreCase` استفاده می‌شود:
```csharp
bool areSameIgnoreCase = name1.Equals(name2, StringComparison.OrdinalIgnoreCase); // True
```

بولی (bool):
    bool status1 = true;
bool status2 = false;
bool isStatus1True = (status1 == true); // True
bool areStatusesDifferent = (status1 != status2); // True


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

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

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
‏C#‎ به شما اجازه میده modifier ها رو در Lambda Expression ها هم استفاده کنید.

```csharp
Func<ref int, int> foo = ref (ref int x) => { x = 1; return x; };
```

‏میتونید از `ref`، `in`، `out` و `params` استفاده کنید. ⚙️ اینطوری انعطاف‌پذیری کدتون بیشتر میشه. 💫 فقط یادتون باشه که signature تابع delegate باید با Lambda Expression یکی باشه.

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

🟣 موضوع : ‏Benchmarking و Performance Testing

نکته :

‏یادتون باشه که Performance Testing یک فرایند مداوم هستش. همیشه باید تست کنید و بهبود بدید! 🔥🔄


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

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

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

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

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
This media is not supported in your browser
VIEW IN TELEGRAM
🔵 Eclipse - Reopen Project

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

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

🟣 Eclipse

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

🟣 دوره آموزش Eclipse


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
‏Endpoint metadata در C# به شما اجازه می‌ده اطلاعات دلخواه خودتون رو به endpointها اضافه کنید. 🏷️

‏این اطلاعات می‌تونه برای مستندسازی API، اعتبارسنجی درخواست‌ها، یا هر منطق سفارشی دیگه‌ای استفاده بشه. ⚙️

‏کافیه یک کلاس بسازید و attribute مربوطه رو بالای endpoint مورد نظر قرار بدید. به این شکل، متادیتا به صورت خودکار در دسترس خواهد بود. 🔑

https://t.me/csharp7
This media is not supported in your browser
VIEW IN TELEGRAM
🔵 Eclipse - Installation

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

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

🟣 Eclipse

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

🟣 دوره آموزش Eclipse


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

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

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

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

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏خطرات و مشکلات کارایی در استفاده نادرست از CROSS JOIN

‏رفیق، یادت باشه CROSS JOIN بی‌حساب و کتاب بزنی، قشنگ کل دیتابیس‌ت منفجر میشه!🔥 حواست باشه شرط WHERE رو درست بذاری.

‏اگه performance برات مهمه، الکی CROSS JOIN نزن! 💡 اول ببین راه بهتری مثل JOIN معمولی داری یا نه. CROSS JOIN فقط وقتی لازمه که واقعاً همه حالت‌ها رو بخوای.

‏فکر کن CROSS JOIN مثل اینه که همه رو با همه جفت کنی! اگه جدول‌هات بزرگ باشن، نتیجه خیلی سنگین میشه. سنگین‌تر از چیزی که فکرشو می‌کنی!

‏وقتی CROSS JOIN میزنی، حتماً حواست به حجم دیتا باشه. ینی چی؟ ینی اول جدول کوچیکتر رو بذار که زودتر فیلتر بشه.

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

‏یه وقتایی CROSS JOIN رو میشه با یه زیرپرس و جو جایگزین کرد. امتحانش کن! شاید جواب بده و سرعتت بهتر بشه.

‏اگه مشکل performance داری، اول ببین ایندکس‌هات درسته یا نه. شاید مشکل از جای دیگه‌ست و الکی داری CROSS JOIN رو مقصر می‌دونی.

‏قبل از اینکه کدت رو deploy کنی، حتماً CROSS JOIN‌ت رو با یه دیتای تستی بزرگتر امتحان کن. اینجوری مطمئن میشی که تو production به مشکل نمی‌خوری.

‏از ابزارهای monitoring استفاده کن تا ببینی query‌هات چقدر resource مصرف می‌کنن. اینجوری می‌فهمی CROSS JOIN‌ت داره چه بلایی سر سرورت میاره.

‏اگه CROSS JOIN‌ت خیلی کنده، به جای یه query بزرگ، تیکه‌تیکه‌ش کن و نتیجه‌ها رو تو یه جدول temporary ذخیره کن. اینجوری شاید manageable‌تر بشه.


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

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

آدرس کانال اصلی :
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
‏ArrayPool<T> در C# برای مدیریت حافظه آرایه‌ها کاربرد دارد. 💡

‏متد `Rent()` یک آرایه از Pool اجاره می‌کند. ⚠️

‏متد `Return()` آرایه را پس از استفاده، به Pool برمی‌گرداند تا دوباره استفاده شود.

‏استفاده درست از `Return()` از ایجاد Garbage جلوگیری می‌کند.

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

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

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

‏یکی از الگوهای پرکاربرد، Observer Pattern است. در این الگو، یک شیء (Subject) وضعیت خود را تغییر می‌دهد و تمام اشیاء وابسته (Observers) که به آن علاقه‌مند هستند، به طور خودکار مطلع شده و به‌روزرسانی می‌شوند. در WinForms، این می‌تواند به این صورت باشد که یک کنترل (مانند دکمه) رویدادی را منتشر کند و چندین جزء دیگر (مثلاً لیبل‌ها یا جعبه‌های متنی) به آن رویداد گوش دهند و واکنش نشان دهند.

‏الگوی دیگری که می‌تواند مفید باشد، Mediator Pattern است. این الگو به جای ارتباط مستقیم بین اشیاء، یک شیء واسطه (Mediator) ایجاد می‌کند که ارتباط بین اشیاء دیگر را مدیریت می‌کند. این امر از وابستگی مستقیم بین کامپوننت‌ها جلوگیری کرده و کد را تمیزتر نگه می‌دارد. به عنوان مثال، در یک فرم پیچیده، یک mediator می‌تواند وظیفه هماهنگی بین دکمه‌ها، لیست‌ها و فیلدهای ورودی را بر عهده بگیرد تا از تداخل یا تکرار منطق جلوگیری شود.

‏همچنین، استفاده از Event Aggregator که نوعی از Mediator Pattern است، می‌تواند در پروژه‌های بزرگتر بسیار مفید باشد. Event Aggregator یک مرکز مرکزی برای انتشار و دریافت رویدادها فراهم می‌کند و به اجزای مختلف اجازه می‌دهد تا بدون نیاز به دانستن یکدیگر، با هم ارتباط برقرار کنند.

‏به یاد داشته باشید که انتخاب الگو بستگی به پیچیدگی و نیازهای پروژه شما دارد. استفاده صحیح از این الگوها می‌تواند به ساخت برنامه‌های WinForms سازمان‌یافته‌تر، قابل تست‌تر و با قابلیت نگهداری بالاتر کمک کند. 🚀

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

🟣 موضوع : ‏معرفی و کاربرد Entity Framework

🟢 سوال :

‏کدام یک از موارد زیر یک روش برای تعریف جداول پایگاه داده در Entity Framework است؟

گزینه ۱:
‏استفاده از کلاس‌های C#

گزینه ۲:
‏استفاده از دستورات SQL

گزینه ۳:
‏استفاده از فایل‌های XML

گزینه ۴:
‏استفاده از فایل‌های JSON

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

🟢 توضیح :

‏Entity Framework جداول پایگاه داده را با استفاده از کلاس‌های C# تعریف می‌کند.

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

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

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

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

🟣 موضوع : ‏FaunaDB و NewSQL ترکیبی

نکته :

‏ساختارهای داده تو FaunaDB خیلی منعطفن. می‌تونی داده‌هات رو هرطور که دوست داری ذخیره کنی. 😎


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

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

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