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

آیدی ادمین:
@ma_limbs
Download Telegram
💡 در 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
This media is not supported in your browser
VIEW IN TELEGRAM
🔵 C# Beginners Tutorial - 55 - Generating Random String

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

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

🟣 C# Beginners Tutorials Playlist

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


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

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

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

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

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
NetworkStream در C# ابزاری قدرتمند برای کار با داده‌های ارسالی و دریافتی از طریق شبکه است. این کلاس بخشی از فضای نام System.Net.Sockets بوده و به شما امکان می‌دهد تا به صورت بایت به بایت یا بلوک‌های داده‌ای، اطلاعات را روی یک اتصال شبکه بخوانید و بنویسید.

‏این استریم به شما اجازه می‌دهد تا با پروتکل‌های مختلفی مانند TCP/IP کار کنید و به عنوان پلی بین برنامه شما و دنیای خارج از کامپیوتر عمل کند. با استفاده از متدهای Read و Write می‌توانید داده‌ها را منتقل کنید.

‏مثال ساده‌ای از خواندن داده از یک NetworkStream:

using System;
using System.Net.Sockets;
using System.Text;

‏// فرض کنید tcpClient یک اتصال برقرار کرده و networkStream از آن گرفته شده است
// TcpClient tcpClient = new TcpClient("hostname", port);
// NetworkStream networkStream = tcpClient.GetStream();

byte[] buffer = new byte[1024];
int bytesRead = networkStream.Read(buffer, 0, buffer.Length);
string receivedData = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine($"Received: {receivedData}");


‏و برای نوشتن داده:

string dataToSend = "Hello, Server!";
byte[] buffer = Encoding.ASCII.GetBytes(dataToSend);
networkStream.Write(buffer, 0, buffer.Length);
Console.WriteLine($"Sent: {dataToSend}");


‏استفاده صحیح از NetworkStream برای مدیریت اتصالات شبکه، ارسال و دریافت داده‌ها در برنامه‌های کلاینت-سرور و سایر سناریوهای ارتباطی ضروری است. 🌐🔌

https://t.me/csharp7
‏در C#، عبارت `fixed` برای دسترسی مستقیم به حافظه مدیریت نشده استفاده می‌شود. 📌 این کار از جابجایی حافظه توسط Garbage Collector جلوگیری می‌کند.

‏راه دیگر، استفاده از `Span<T>` است. 🧰 این ساختار، نمایشی از یک بلاک حافظه (مدیریت شده یا نشده) ارائه می‌دهد و در بسیاری از موارد، جایگزین ایمن‌تری برای `fixed` است.

‏انتخاب بین این دو، بستگی به نیازهای خاص و سطح کنترل مورد نیاز دارد. ⚙️

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#، مقداردهی اولیه اشیاء (Object Initializer) و سازنده‌ها (Constructor) هر دو برای ایجاد و تنظیم اشیاء استفاده می‌شوند، اما تفاوت کلیدی در این است که مقداردهی اولیه اشیاء، بعد از فراخوانی سازنده پیش‌فرض (یا سازنده‌ای که شما مشخص می‌کنید) انجام می‌شود و مقادیر اعضای شیء را تنظیم می‌کند. در حالی که سازنده، منطق اصلی ایجاد شیء و مقداردهی اولیه اجباری را بر عهده دارد.

‏به عبارت دیگر، سازنده برای ایجاد شیء ضروری است، اما مقداردهی اولیه اشیاء اختیاری بوده و برای تنظیم راحت‌تر مقادیر بعد از ساخت شیء استفاده می‌شود. 💡

‏مثال:
```csharp
Person p = new Person() { Name = "Ali", Age = 30 };
```
👨‍💻

https://t.me/csharp7
‏SortedDictionary در C#

SortedDictionary<TKey, TValue> یک مجموعه کلید-مقدار است که به طور خودکار کلیدها را مرتب نگه می‌دارد. این ویژگی باعث می‌شود بازیابی داده‌ها بر اساس ترتیب کلیدها بسیار کارآمد باشد.

‏تاثیر مرتب‌سازی بر عملکرد:

جستجو و بازیابی: به دلیل مرتب بودن کلیدها، عملیات جستجو (مانند `ContainsKey` یا دسترسی به مقدار با استفاده از کلید) در `SortedDictionary` سریع‌تر از `Dictionary` (که کلیدها مرتب نیستند) است، به خصوص در مجموعه های بزرگ. این زمان جستجو به طور معمول O(log n) است.
اضافه کردن و حذف: اضافه کردن و حذف عناصر در SortedDictionary نیز با توجه به نیاز به حفظ ترتیب، کمی کندتر از Dictionary است و زمان آن نیز O(log n) می‌باشد.

‏در مقابل، Dictionary در اضافه کردن و حذف سریع‌تر عمل می‌کند (O(1) به طور متوسط)، اما جستجو در آن کندتر است (O(n) در بدترین حالت).

‏بنابراین، انتخاب بین SortedDictionary و Dictionary بستگی به اولویت شما در عملیات دارد: اگر مرتب بودن کلیدها و جستجوهای سریع بر اساس آن اولویت دارد، SortedDictionary گزینه مناسبی است. 📚
🔵 کوییز #سی_شارپ

🟣 موضوع : ‏نصب و پیکربندی محیط Visual Studio برای C#

🟢 سوال :

‏کدام یک از موارد زیر برای پیکربندی تنظیمات Visual Studio برای C# استفاده می‌شود؟

گزینه ۱:
Command Prompt

گزینه ۲:
PowerShell

گزینه ۳:
Options menu

گزینه ۴:
Task Manager

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

🟢 توضیح :

‏Options menu برای پیکربندی تنظیمات Visual Studio برای C# استفاده می‌شود.

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

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

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

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