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

آیدی ادمین:
@ma_limbs
Download Telegram
🔵 کوییز #مفاهیم_کلی_برنامه_نویسی

🟣 موضوع : ‏کار با محیط‌های توسعه تست محور (TDD): مفهوم و چگونگی پیاده‌سازی

🟢 سوال :

‏یکی از چالش‌های احتمالی در پیاده‌سازی TDD برای مبتدیان چیست؟

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

گزینه ۲:
‏سخت بودن در تعیین اینکه چه چیزی را باید تست کرد و چگونه تست‌ها را نوشت

گزینه ۳:
‏اجرای تست‌ها زمان زیادی می‌گیرد

گزینه ۴:
‏ادغام تست‌ها با سیستم ساخت (build system) دشوار است



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

🟢 توضیح :

‏برای مبتدیان، ممکن است در ابتدا دشوار باشد که بدانند دقیقاً چه جنبه‌هایی از کد را باید تست کنند و چگونه تست‌های موثر و جامعی بنویسند که رفتار مورد انتظار را به درستی پوشش دهد.

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

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

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

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

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

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

‏با استفاده از Reflection، می‌توانیم خصوصیات (Properties) و فیلدهای (Fields) یک شیء را بخوانیم و مقادیر آن‌ها را به فرمتی مانند JSON یا XML تبدیل کنیم. در فرآیند دی‌سریالایز کردن، برعکس این عمل انجام می‌شود؛ مقادیر از فرمت داده شده خوانده شده و برای ایجاد یا به‌روزرسانی خصوصیات و فیلدهای شیء استفاده می‌شوند.

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

‏مثال ساده‌ای از خواندن خصوصیات یک شیء با Reflection:

using System;
using System.Reflection;

public class MyClass
{
public int Id { get; set; }
public string Name { get; set; }
}

public class ReflectionExample
{
public static void Main(string[] args)
{
MyClass obj = new MyClass { Id = 1, Name = "Test" };
Type objType = obj.GetType();

Console.WriteLine($"Type: {objType.Name}");

foreach (PropertyInfo prop in objType.GetProperties())
{
Console.WriteLine($"Property: {prop.Name}, Value: {prop.GetValue(obj)}");
}

foreach (FieldInfo field in objType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic))
{
Console.WriteLine($"Field: {field.Name}, Value: {field.GetValue(obj)}");
}
}
}


‏این قابلیت، پایه‌ای برای پیاده‌سازی مکانیزم‌های سریالایز و دی‌سریالایز سفارشی فراهم می‌کند، اما باید توجه داشت که استفاده نادرست از Reflection می‌تواند منجر به کاهش عملکرد و پیچیدگی کد شود. 🚀💡

https://t.me/csharp7
‏Complex numbers در C#‎! 🧮

‏با استفاده از `System.Numerics`، نوع داده `Complex` برای محاسبات با اعداد مختلط در دسترسه.

`Complex a = new Complex(3.0, 4.0);`
`Complex b = Complex.Conjugate(a);`

‏به سادگی مزدوج عدد مختلط `a` رو در `b` ذخیره کردیم.

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

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
🔍🚀 در C# 7 به بعد، `SearchValues<T>` برای جستجوی سریع چند مقدار در یک مجموعه داده بزرگ کاربرد داره. این ساختار داده، مجموعه‌ای از مقادیر رو پیش‌پردازش می‌کنه تا عملیات lookup بهینه‌تر انجام بشه.

‏به جای اینکه یک لیست بلند بالا از `if` یا `Contains` استفاده کنی، `SearchValues<T>` سرعت جستجو رو به شکل چشمگیری افزایش میده. مخصوصاً وقتی که با رشته‌ها یا اعداد سروکار داری، این تکنیک می‌تونه خیلی مفید باشه. 👌

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

🟣 موضوع : ‏بررسی الگوی Observer

🟢 سوال :

‏هدف اصلی الگوی Observer چیست؟

گزینه ۱:
‏افزایش سرعت اجرای برنامه

گزینه ۲:
‏اطلاع‌رسانی تغییرات یک شیء به اشیاء وابسته به آن

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

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

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

🟢 توضیح :

‏هدف اصلی الگوی Observer، اطلاع‌رسانی تغییرات یک شیء به اشیاء وابسته به آن است.

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

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

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

آدرس وبسایت:
https://Tutorial24.ir
‏فضاهای نام (Namespaces) در C# ابزاری حیاتی برای سازماندهی کد و جلوگیری از تداخل نام‌ها هستند. آن‌ها مانند پوشه‌هایی عمل می‌کنند که کلاس‌ها، ساختارها، اینترفیس‌ها و سایر اعضای کد را دسته‌بندی می‌کنند.

‏با استفاده از using، می‌توانید به اعضای یک فضای نام دسترسی پیدا کنید بدون اینکه نیاز باشد نام کامل فضای نام را قبل از هر عضو ذکر کنید.

‏مثال:

‏using System; // دسترسی به کلاس‌هایی مانند Console

namespace MyProject
{
class Program
{
static void Main(string[] args)
{
‏ Console.WriteLine("Hello, Namespaces!"); // استفاده از کلاس Console از فضای نام System
}
}
}


‏هر فضای نام می‌تواند شامل فضاهای نام دیگر نیز باشد و این سلسله مراتب به مدیریت پروژه‌های بزرگ کمک شایانی می‌کند. 🚀💡

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

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

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

🟣 موضوع : ‏کپسوله‌سازی (Encapsulation) و حفاظت از داده‌ها

🟢 سوال :

‏هدف اصلی کپسوله‌سازی (Encapsulation) در C# چیست؟

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

گزینه ۲:
‏پنهان کردن جزئیات پیاده‌سازی و کنترل دسترسی به داده‌ها

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

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

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

🟢 توضیح :

‏کپسوله‌سازی جزئیات پیاده‌سازی را پنهان کرده و دسترسی به داده‌ها را کنترل می‌کند.

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

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

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

آدرس وبسایت:
https://Tutorial24.ir
‏C# 12 قابلیت جدیدی به ArrayExtensions اضافه کرده.

‏متد Chunk به شما اجازه میده آرایه رو به قسمت‌های مساوی تقسیم کنید. اگه تعداد اعضا به اندازه کافی نباشه، آخرین قسمت کوچکتر خواهد بود. 🛠️

‏مثال:
`int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};`
`var chunks = numbers.Chunk(3);`
// {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}} 🧪

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

https://t.me/csharp7
‏حلقه‌های تو در تو در C# ابزاری قدرتمند برای پیمایش ساختارهای داده چندبعدی مانند آرایه‌های دوبعدی یا ماتریس‌ها هستند. حلقه بیرونی معمولاً برای پیمایش ردیف‌ها و حلقه درونی برای پیمایش ستون‌ها به کار می‌رود.

‏به عنوان مثال، برای چاپ تمام عناصر یک آرایه دوبعدی:

int[,] matrix = {
{ 1, 2, 3 },
{ 4, 5, 6 }
};

for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
Console.Write(matrix[i, j] + " ");
}
Console.WriteLine();
}


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

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
‏در توسعه برنامه‌های دسکتاپ با C#، دو فریم‌ورک اصلی WPF و WinForms وجود دارند که هر کدام اکوسیستم و ابزارهای متفاوتی را ارائه می‌دهند.

WPF (Windows Presentation Foundation):

اکوسیستم: مدرن‌تر، انعطاف‌پذیرتر و قدرتمندتر. از XAML برای طراحی رابط کاربری استفاده می‌کند که جداسازی منطق از ظاهر را تسهیل می‌کند.
ابزارها: Visual Studio با قابلیت طراحی بصری XAML، ابزارهای دیباگینگ پیشرفته، پشتیبانی از گرافیک‌های برداری و انیمیشن‌های پیچیده.
مزایا: قابلیت سفارشی‌سازی بالا، ظاهر مدرن، پشتیبانی از MVC/MVVM.

WinForms (Windows Forms):

اکوسیستم: قدیمی‌تر، ساده‌تر و سریع‌تر برای توسعه برنامه‌های دسکتاپ سنتی. از طراحی رویداد محور استفاده می‌کند.
ابزارها: Visual Studio با طراح بصری drag-and-drop، کتابخانه‌های کنترل غنی.
مزایا: یادگیری آسان‌تر، سرعت توسعه بالا برای پروژه‌های ساده، سازگاری بیشتر با سیستم‌های قدیمی.

‏انتخاب بین این دو به نیاز پروژه، پیچیدگی رابط کاربری و آشنایی تیم توسعه بستگی دارد.

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
🚀 پایتون کار حرفه‌ای شو!

‏بسته بندی (Packaging) و ساخت Wheel رو یاد بگیر. 📦 دیگه لازم نیست کدت رو کپی پیست کنی! 😎

‏با Packaging پروژه‌هات رو مرتب و قابل نصب کن. Wheel هم یه فرمت آماده نصبه، سریع و بی دردسر! ⚙️

‏آموزش‌های آنلاین پره، یه سرچ بزن و شروع کن! 😉
#پایتون #آموزش #Packaging #Wheel

https://t.me/python7ir
💠 عضو جامع ترین کانال های توسعه فردی، روانشناسی و موفقیت شوید:

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0

شامل موضوعات آموزشی زیر:

توسعه و رشد فردی
افزایش ثروت
هدف گذاری و مدیریت زمان
مهارت های اجتماعی، ارتباطی و فن بیان
روانشناسی و خودیاری
موفقیت
عادات موثر
سلامت و تغذیه سالم
موفقیت شغلی
عبارات تاکیدی
مدیریت اضطراب و خشم
روان درمانی CBT و ACT
شخصیت شناسی و تحلیل روانشناسی
انگیزشی
کودک درون
تکنیک های NLP
یوگا
افزایش حافظه
مدیتیشن
موفقیت تحصیلی
مطالعه موثر
افزایش اعتماد به نفس
افزایش تمرکز
تفکر مثبت
افزایش خلاقیت
نقل قول های انگیزشی

با کلیک بر روی لینک زیر عضو تمامی این کانال ها شوید:

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0
‏پایتون ۲ یا ۳؟ 🤔

‏هنوزم پایتون ۲ استفاده می‌کنی؟ وقتشه کوچ کنی! 🏃‍♂️

‏تفاوت اصلی تو نحوه مدیریت رشته‌هاست. پایتون ۳ از Unicode استفاده می‌کنه که جهانی‌تره.

‏یه فرق دیگه تو دستور `print` هست. پایتون ۲ یه statement بود، ولی پایتون ۳ یه function شده. `print()`

‏کد پایتون ۳ خواناتر و مدرن‌تره. 💪

https://t.me/python7ir
‏در توسعه برنامه‌های دسکتاپ با C#، چه با WPF و چه WinForms، بلوک finally نقش مهمی در مدیریت منابع و اجرای کد تضمین شده ایفا می‌کند.

‏هنگامی که یک بلوک try-catch را تعریف می‌کنید، کدی که درون بلوک finally قرار می‌گیرد، بدون توجه به اینکه آیا خطایی رخ داده است یا خیر، اجرا خواهد شد. این ویژگی، finally را برای عملیاتی مانند آزادسازی منابع (مانند بستن فایل‌ها، قطع اتصالات پایگاه داده یا رها کردن دستگیره‌های سیستم) که باید همیشه انجام شوند، ایده‌آل می‌سازد.

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

try
{
‏ // کد مربوط به عملیات با فایل
‏ // ممکن است در اینجا خطایی رخ دهد
‏ Console.WriteLine("در حال پردازش فایل...");
‏ // throw new Exception("یک خطای شبیه‌سازی شده"); // برای تست خطا
}
catch (Exception ex)
{
‏ Console.WriteLine($"خطا رخ داد: {ex.Message}");
}
finally
{
‏ // این بلوک همیشه اجرا می‌شود
‏ Console.WriteLine("بلوک finally اجرا شد. آزادسازی منابع...");
‏ // در اینجا کد مربوط به بستن فایل یا آزادسازی منابع دیگر قرار می‌گیرد
}


‏استفاده صحیح از finally به جلوگیری از نشت منابع و بهبود پایداری برنامه‌های شما کمک شایانی می‌کند. 🔒

https://t.me/csharp7
‏در توسعه اپلیکیشن‌های دسکتاپ با C# و فریم‌ورک‌های WPF و WinForms، دو رویکرد اصلی برای تعریف رابط کاربری (UI) وجود دارد: استفاده از زبان‌های تعریف رابط کاربری (UIDL) مانند XAML و روش Code-Behind که در آن UI مستقیماً با کد C# نوشته می‌شود.

‏XAML (eXtensible Application Markup Language) یک زبان نشانه‌گذاری مبتنی بر XML است که برای تعریف ساختار و ظاهر UI به کار می‌رود. در WPF، XAML به طور گسترده‌ای برای طراحی صفحات، عناصر کنترلی، استایل‌ها و انیمیشن‌ها استفاده می‌شود. این رویکرد مزایایی چون جداسازی منطق UI از منطق برنامه، قابلیت بازسازی و استفاده مجدد UI، و همچنین امکان استفاده از طراحان بصری را فراهم می‌کند.

‏مثال ساده XAML برای یک دکمه در WPF:
<Button Content="Click Me" HorizontalAlignment="Center" VerticalAlignment="Center"/>


‏Code-Behind رویکرد سنتی‌تری است که در آن تمام عناصر UI و رفتار آن‌ها مستقیماً در کد C# تعریف و مدیریت می‌شوند. در WinForms، این روش رایج‌تر است، اما در WPF نیز می‌توان از آن استفاده کرد. در این روش، شما کلاس‌هایی برای عناصر UI تعریف کرده و ویژگی‌ها و رویدادهای آن‌ها را در کد C# تنظیم می‌کنید.

‏مثال معادل Code-Behind برای دکمه بالا (در WPF):
var button = new Button();
button.Content = "Click Me";
button.HorizontalAlignment = HorizontalAlignment.Center;
button.VerticalAlignment = VerticalAlignment.Center;
‏// اضافه کردن button به layout parent


‏مقایسه:

جداسازی: XAML به طور طبیعی جداسازی بهتری بین طراحی UI و منطق برنامه ایجاد می‌کند، که برای تیم‌های بزرگ و پروژه‌های پیچیده مزیت محسوب می‌شود. Code-Behind این جداسازی را کمتر فراهم می‌کند.
قابلیت خوانایی: برای طراحی‌های پیچیده، XAML خواناتر و سازمان‌یافته‌تر است. کدنویسی UI در C# می‌تواند به سرعت طولانی و غیرقابل مدیریت شود.
ابزارهای طراحی: WPF با XAML از ابزارهای طراحی بصری قدرتمندی پشتیبانی می‌کند که فرآیند طراحی را تسریع می‌بخشد. WinForms نیز به طور عمده بر پایه Code-Behind و طراح بصری خود عمل می‌کند.
انعطاف‌پذیری: هر دو روش انعطاف‌پذیری لازم را دارند، اما XAML با قابلیت‌های پیشرفته‌تری مانند Binding داده و استایل‌دهی قدرتمند، انعطاف‌پذیری بیشتری در جنبه‌های ظاهری و تعاملی UI ارائه می‌دهد.

‏انتخاب بین XAML و Code-Behind بستگی به نوع پروژه، تجربه تیم و نیازهای خاص اپلیکیشن شما دارد. WPF به طور غالب از XAML بهره می‌برد، در حالی که WinForms بیشتر به سمت Code-Behind گرایش دارد.

https://t.me/csharp7