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

آیدی ادمین:
@ma_limbs
Download Telegram
‏استفاده از `ValueTask` در C# برای بهبود کارایی عملیات غیرهمزمان رایج است. 💡 اما حواستان به این نکته باشد: `ValueTask` فقط یک بار قابل `await` شدن است. استفاده مجدد از آن می‌تواند منجر به خطا شود.

‏بهترین شیوه: اگر احتمال استفاده مجدد از نتیجه عملیات غیرهمزمان وجود دارد، از `.AsTask()` برای تبدیل `ValueTask` به `Task` استفاده کنید. این کار از بروز مشکلات احتمالی جلوگیری می‌کند. ⚙️

https://t.me/csharp7
‏در C#، کالکشن‌ها (Collections) ساختارهای داده‌ای انعطاف‌پذیرتر و قدرتمندتری نسبت به آرایه‌ها (Arrays) هستند.

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

‏کالکشن‌ها، که عمدتاً در فضای نام System.Collections و System.Collections.Generic قرار دارند، امکاناتی مانند تغییر اندازه پویا، اضافه کردن و حذف آسان عناصر، و پشتیبانی از انواع داده‌های مختلف (در کالکشن‌های جنریک) را فراهم می‌کنند.

‏برخی از انواع رایج کالکشن‌ها عبارتند از:
‏- List<T>: لیستی پویا که امکان افزودن، حذف و دسترسی به عناصر را فراهم می‌کند.
‏- Dictionary<TKey, TValue>: مجموعه‌ای از جفت‌های کلید-مقدار که دسترسی سریع به مقادیر بر اساس کلید را ممکن می‌سازد.
‏- HashSet<T>: مجموعه‌ای که فقط مقادیر منحصر به فرد را ذخیره می‌کند و از تکرار جلوگیری می‌کند.

‏استفاده از کالکشن‌ها معمولاً کدنویسی را ساده‌تر و خواناتر می‌کند، به خصوص زمانی که اندازه داده‌ها از قبل مشخص نیست یا نیاز به عملیات پیچیده‌تری روی داده‌ها وجود دارد. 🗂️💡
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین‌ و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید:

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

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

‏پس از شفاف‌سازی نیازها، نوبت به انتخاب معماری مناسب می‌رسد. معماری‌های رایج در C# شامل MVC (Model-View-Controller)، MVVM (Model-View-ViewModel) و Clean Architecture هستند. انتخاب معماری به پیچیدگی پروژه و تیم توسعه بستگی دارد.

‏همچنین، انتخاب فریم‌ورک و کتابخانه‌های مناسب نقش حیاتی در سرعت و کیفیت توسعه دارد. برای برنامه‌های وب، ASP.NET Core گزینه قدرتمندی است. برای برنامه‌های دسکتاپ، WPF یا WinForms مورد استفاده قرار می‌گیرند. برای توسعه بازی، Unity انتخاب رایجی است.

‏در نظر گرفتن ابزارهای توسعه مانند Visual Studio یا VS Code، و همچنین سیستم‌های کنترل نسخه مانند Git، از دیگر موارد مهم در آغاز یک پروژه C# هستند.

‏در شروع یک پروژه C#، تحلیل دقیق نیازها اولین گام است. این تحلیل شامل درک هدف اصلی پروژه، مخاطبان هدف، و قابلیت‌های مورد نیاز است.

‏پس از شفاف‌سازی نیازها، نوبت به انتخاب معماری مناسب می‌رسد.

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، نوع بازگشتی متدها می‌تواند Covariant باشد. یعنی یک متد در کلاس فرزند، می‌تواند نوعی را برگرداند که مشتق شده از نوع بازگشتی متد همنام در کلاس والد باشد.

```csharp
class Animal { }
class Dog : Animal { }

class AnimalShelter {
public virtual Animal GetAnimal() { return new Animal(); }
}

class DogShelter : AnimalShelter {
public override Dog GetAnimal() { return new Dog(); } // Covariant
}
```

‏این قابلیت، انعطاف‌پذیری کد رو بالا می‌بره. 🐕‍🦺🐾

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#‎، استفاده از `Span<T>` و `ReadOnlySpan<T>` برای دستکاری آرایه‌ها و رشته‌ها بدون تخصیص حافظه جدید، عملکرد برنامه را به طور چشمگیری بهبود می‌بخشد.

این ساختارها، به‌ویژه در پردازش داده‌های حجیم یا عملیات مکرر، جایگزین بهینه‌تری نسبت به متدهای قدیمی‌تر مانند `Substring` هستند.

🚀 با استفاده از `Span<T>` و `ReadOnlySpan<T>`، از کپی‌کردن غیرضروری داده‌ها جلوگیری کرده و سرعت و کارایی کد خود را افزایش دهید.

https://t.me/csharp7
‏`AsEnumerable()` نوع داده رو به `IEnumerable<T>` تبدیل می‌کنه، یعنی فقط برای خواندن مناسبه.

‏`ToList()` یک لیست جدید می‌سازه و اطلاعات رو کپی می‌کنه. پس، تغییرات توی لیست اصلی، روی لیست جدید تاثیری نداره. سرعتش هم از `AsEnumerable()` بیشتره. 🚀

‏انتخاب با شماست! 😉

https://t.me/csharp7
‏در C#، توابع لامبدا می‌توانند با دو نوع بدنه تعریف شوند: بدنه عبارت (Expression Body) و بدنه بلوکی (Block Body).

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

‏مثال:
‏// بدنه عبارت
Func<int, int> square = x => x * x;

‏در این مثال، x => x * x یک تابع لامبدا با بدنه عبارت است که ورودی x را گرفته و مربع آن را برمی‌گرداند.

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

‏مثال:
‏// بدنه بلوکی
Func<int, int> addOneAndMultiply = x =>
{
int result = x + 1;
return result * 2;
};

‏در این مثال، x => { ... } یک تابع لامبدا با بدنه بلوکی است که ابتدا یک واحد به x اضافه کرده و سپس نتیجه را در 2 ضرب می‌کند.

‏انتخاب بین این دو نوع بدنه به پیچیدگی منطق تابع لامبدا بستگی دارد. برای سادگی، بدنه عبارت ارجحیت دارد. 🚀💡

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
This media is not supported in your browser
VIEW IN TELEGRAM
🔵 Eclipse - Content Assist

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

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

🟣 Eclipse

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

🟣 دوره آموزش Eclipse


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
‏در WPF، تبدیل‌کننده‌های مقدار (Value Converters) ابزاری قدرتمند برای تغییر فرمت یا مقادیر داده‌ها هنگام اتصال آن‌ها به عناصر رابط کاربری هستند. این تبدیل‌کننده‌ها زمانی کاربرد دارند که نوع داده‌ای که در مدل شما وجود دارد، مستقیماً قابل نمایش یا استفاده در عنصر UI نباشد.

‏به عنوان مثال، فرض کنید یک مقدار بولی (bool) دارید که می‌خواهید آن را به صورت یک رشته متنی "فعال" یا "غیرفعال" در یک لیبل نمایش دهید، یا یک مقدار عددی را به یک رنگ خاص تبدیل کنید. در این شرایط، یک IValueConverter ایجاد می‌کنید.

‏این اینترفیس دارای دو متد اصلی است:
`Convert`: این متد داده را از منبع (معمولاً مدل) دریافت کرده و آن را به فرمت دلخواه برای مقصد (عنصر UI) تبدیل می‌کند.
ConvertBack: این متد داده را از مقصد (عنصر UI) دریافت کرده و آن را به فرمت اصلی منبع تبدیل می‌کند. این متد برای سناریوهایی مانند ویرایش داده‌ها در UI و ذخیره مجدد در مدل ضروری است.

‏یک مثال ساده از تبدیل‌کننده مقدار برای نمایش وضعیت فعال/غیرفعال:

using System;
using System.Globalization;
using System.Windows.Data;

public class BooleanToStatusConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is bool boolValue)
{
‏ return boolValue ? "فعال" : "غیرفعال";
}
‏ return "نامشخص"; // یا مقدار پیش‌فرض دیگر
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is string stringValue)
{
‏ return stringValue == "فعال";
}
‏ return false; // یا مقدار پیش‌فرض دیگر
}
}


‏برای استفاده از این تبدیل‌کننده در XAML، ابتدا باید آن را در منابع برنامه (Resources) تعریف کرده و سپس به ویژگی مورد نظر عنصر UI اعمال کنید.

<Window.Resources>
<local:BooleanToStatusConverter x:Key="StatusConverter"/>
</Window.Resources>

<TextBlock Text="{Binding IsActive, Converter={StaticResource StatusConverter}}"/>


‏این روش انعطاف‌پذیری بالایی را در نمایش و مدیریت داده‌ها در WPF فراهم می‌کند. 🔄

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

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

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

🟣 Eclipse

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

🟣 دوره آموزش Eclipse


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
‏برای مرتب‌سازی یک List<T> در C#، می‌توانید از متد Sort() استفاده کنید. این متد به طور پیش‌فرض لیست را بر اساس مقادیر عناصر مرتب می‌کند، به شرطی که نوع عناصر از مرتب‌سازی پشتیبانی کند (مانند اعداد یا رشته‌ها).

List<int> numbers = new List<int> { 5, 2, 8, 1, 9 };
‏numbers.Sort(); // مرتب‌سازی صعودی
‏// numbers حالا { 1, 2, 5, 8, 9 } خواهد بود


‏اگر نیاز به مرتب‌سازی با منطق سفارشی دارید، می‌توانید یک IComparer<T> پیاده‌سازی کرده و آن را به متد Sort() ارسال کنید. این امکان، کنترل کاملی بر نحوه مقایسه و مرتب‌سازی عناصر به شما می‌دهد.

public class CustomComparer : IComparer<int>
{
public int Compare(int x, int y)
{
‏ // مرتب‌سازی نزولی
return y.CompareTo(x);
}
}

List<int> numbers = new List<int> { 5, 2, 8, 1, 9 };
‏numbers.Sort(new CustomComparer()); // مرتب‌سازی نزولی
‏// numbers حالا { 9, 8, 5, 2, 1 } خواهد بود


‏همچنین، می‌توانید از یک تابع لامبدا (Lambda expression) برای تعریف منطق مقایسه به صورت inline استفاده کنید. این روش اغلب خواناتر و مختصرتر است.

List<string> names = new List<string> { "Ali", "Reza", "Sina", "Sara" };
‏names.Sort((x, y) => x.Length.CompareTo(y.Length)); // مرتب‌سازی بر اساس طول رشته
‏// names حالا { Ali, Sina, Sara, Reza } خواهد بود (اگر طول اولویت داشته باشد)

📊💻

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
‏CLR (Common Language Runtime) در دات‌نت، نقش کلیدی در تضمین سازگاری نسخه‌های آینده C# و سایر زبان‌های دات‌نت ایفا می‌کند. این موتور زمان اجرا، وظیفه ترجمه و اجرای کد کامپایل شده را بر عهده دارد.

‏یکی از دلایل اصلی سازگاری CLR، رویکرد آن در مدیریت نوع داده‌ها و متادیتای کد است. CLR اطمینان حاصل می‌کند که تغییرات در زبان C# یا ویژگی‌های جدید، همچنان توسط نسخه‌های قدیمی‌تر CLR قابل درک و اجرا باشند (تا جایی که منطقی باشد).

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

https://t.me/csharp7
🚀 اتومـاسیون مرورگر با پایتون و Selenium! 🤖

‏دیگه وقتشه کارهای تکراری مرورگر رو به کد بسپاری! 💻

‏Selenium یه ابزار قدرتمنده که بهت اجازه میده با پایتون، مرورگر رو کنترل کنی.

‏از تست وب‌سایت‌ها بگیر تا جمع‌آوری داده، همه چی با Selenium آسون‌تر میشه!

‏آماده‌ای یاد بگیری؟ تو پست‌های بعدی منتظر آموزش‌های کاربردی باش! 😉

https://t.me/python7ir
🔵 دوست داری برنامه نویس حرفه ای بشی یا مهارت های کامپیوتری خودت رو افزایش بدی؟ با عضویت در لیست تلگرامی زیر در بی نظیر ترین کانال های برنامه نویسی ما عضو شوید:

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

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

https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
This media is not supported in your browser
VIEW IN TELEGRAM
🔵 C# Beginners Tutorial - 49 - Substrings

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

🔴 توجه کنید با تنظیمات خود تلگرام می توانید حجم و کیفیت ویدیو را بر اساس سرعت اینترنت خود تنظیم نمایید.

🟣 C# Beginners Tutorials Playlist

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


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

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

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

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