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

آیدی ادمین:
@ma_limbs
Download Telegram
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
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین‌ و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید:

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
‏C#‎ دو روش برای مدیریت null داره:

‏Null-forgiving operator (!): وقتی مطمئنید یک متغیر nullable، null نیست، از این علامت استفاده می‌کنید. با این کار، کامپایلر دیگه هشدار null نمی‌ده. ⚠️

‏Null-conditional operator (?): اگه متغیر null باشه، دیگه ادامه عملیات اجرا نمیشه و null برمی‌گردونه. از NullReferenceException جلوگیری می‌کنه.

‏انتخاب با شماست، بسته به شرایط! 😉

https://t.me/csharp7
📢 رویدادهای دامنه رو شنیدی؟ 🤔

‏با MassTransit چطور میشه مدیریتشون کرد؟ 🚀

‏یه آموزش کوتاه و کاربردی براتون آماده کردیم.

‏یاد میگیریم چطور رویدادها رو Publish کنیم و با MassTransit هندلشون کنیم.

‏دیگه نگران بهم ریختگی کد نباشید! 😉

🔗 [لینک به آموزش]
#dotnet #masstransit #domainevents

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

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

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

https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
‏C# 11 به شما امکان میده الگوهای `List` رو مستقیماً داخل الگوهای `switch` استفاده کنید.
```csharp
string GetSequenceType(int[] sequence) => sequence switch {
[1, 2, 3] => "The sequence 1, 2, 3",
[_, _, 4] => "Sequence ending with 4",
[.., 5] => "Sequence containing 5",
[>=0, ..] => "Sequence with non-negative start",
_ => "Other sequence",
};
```

‏همچنین میتونید از `slice patterns` برای بررسی بخش‌هایی از آرایه‌ها استفاده کنید.

```csharp
int[] numbers = { 1, 2, 3, 4, 5 };
var slice = numbers[2..4]; // slice is {3, 4}
```

‏این الگوها، خوانایی و قدرت الگوها در سی‌شارپ رو افزایش میدن. ⚙️💻

https://t.me/csharp7
📚 نکته #SQLite

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

نکته 1:
‏SpatiaLite یک پسوند فضایی (Spatial Extension) برای SQLite است که به صورت یک کتابخانه الحاقی (Loadable Extension) پیاده‌سازی شده و باید به طور جداگانه کامپایل و نصب گردد.

نکته 2:
‏برای بهره‌برداری از قابلیت‌های GIS، هسته SQLite نیازمند بارگذاری دینامیکی (Dynamic Loading) کتابخانه SpatiaLite است که معمولاً به صورت یک فایل .dll یا .so ارائه می‌شود.

نکته 3:
‏نصب SpatiaLite به دلیل وابستگی به چندین کتابخانه جغرافیایی دیگر، نظیر GEOS و PROJ.4، ممکن است نیازمند نصب پیش‌نیازهای متعددی باشد.

نکته 4:
‏در محیط خط فرمان SQLite، بارگذاری افزونه پس از اتصال به پایگاه داده با استفاده از فرمان .load /path/to/mod_spatialite انجام می‌گیرد.

نکته 5:
‏در برنامه‌نویسی، توابع API مربوط به SQLite، مانند sqlite3loadextension، برای بارگذاری برنامه‌نویسی شده و دینامیکی کتابخانه SpatiaLite به داخل موتور پایگاه داده استفاده می‌شود.

نکته 6:
‏پس از بارگذاری موفقیت‌آمیز کتابخانه، نیاز به اجرای دستورات SQL خاصی نظیر SELECT InitSpatialMetaData() است تا جداول سیستمی لازم برای مدیریت فراداده‌های فضایی (Spatial Metadata) ایجاد شوند.

نکته 7:
‏نصب و راه‌اندازی SpatiaLite در سیستم‌عامل‌های مبتنی بر لینوکس غالباً از طریق مدیریت بسته (Package Manager) سیستم انجام می‌شود که وابستگی‌ها را به صورت خودکار حل می‌کند.

نکته 8:
‏ضرورت دارد که نسخه کامپایل‌شده کتابخانه SpatiaLite با نسخه کامپایل‌شده هسته SQLite مورد استفاده، به لحاظ معماری و بیت‌نس (۳۲ یا ۶۴ بیتی) سازگاری داشته باشد.

نکته 9:
‏پس از نصب، پایگاه داده SQLite با استفاده از توابع فضایی جدید که به صورت پیشوند ST_ (Spatial Type) مشخص می‌شوند، قابلیت ذخیره و تحلیل داده‌های هندسی را کسب می‌کند.

نکته 10:
‏نصب موفقیت‌آمیز باید با اجرای یک پرس‌وجوی ساده، مانند SELECT spatialite_version()، که نسخه افزونه فضایی را برمی‌گرداند، مورد تأیید قرار گیرد.


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

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

آدرس کانال اصلی :
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
‏ویژگی `DebuggerDisplay` در C#‎ به شما کمک می‌کنه اطلاعات مهم یک کلاس رو در حالت دیباگ سریع‌تر ببینید. 🐞

‏اما می‌دونستید میشه از `{` و `}` برای نمایش فیلدها و پراپرتی‌ها استفاده کرد؟ مثلاً:

`[DebuggerDisplay("User: {Name}, ID: {Id}")]`

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

`[DebuggerDisplay("Value: {CalculateValue()}")]`

‏فقط حواستون باشه متد خیلی پیچیده نباشه که دیباگ رو کُند کنه. ⚙️

https://t.me/csharp7
💡 تزریق وابستگی (Dependency Injection) در C# می‌تونه در زمان کامپایل هم انجام بشه، نه فقط در زمان اجرا.

⚙️ این روش باعث میشه خطاهای مربوط به وابستگی‌ها زودتر مشخص بشن و performance بهتری داشته باشیم.

📚 برای این کار میشه از Source Generators استفاده کرد.

https://t.me/csharp7
‏عبارات لامبدا در C# ابزاری قدرتمند برای نوشتن کدهای فشرده و خوانا، به خصوص در کوئری‌های LINQ هستند. این عبارات به شما اجازه می‌دهند تا توابع ناشناس را به صورت مختصر تعریف کنید.

‏برای مثال، فرض کنید لیستی از اعداد دارید و می‌خواهید فقط اعداد زوج را فیلتر کنید. به جای تعریف یک متد جداگانه، می‌توانید از یک عبارت لامبدا استفاده کنید:

var numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

var evenNumbers = numbers.Where(n => n % 2 == 0);

foreach (var num in evenNumbers)
{
‏ Console.WriteLine(num); // خروجی: 2, 4, 6, 8, 10
}


‏در این مثال، n => n % 2 == 0 یک عبارت لامبدا است که به عنوان یک پارامتر به متد Where پاس داده می‌شود. n پارامتر ورودی و n % 2 == 0 بدنه عبارت است که نتیجه true یا false را برمی‌گرداند. 🚀💡

https://t.me/csharp7
‏اجرای تاخیری (Deferred execution) در LINQ، با اینکه قدرتمنده، می‌تونه دردسرساز هم بشه! 😬

‏فرض کن یه کوئری LINQ نوشتی که از یه منبع داده (مثلاً یه لیست) استفاده می‌کنه. اگه بعد از تعریف کوئری، منبع داده تغییر کنه، نتیجه کوئری هم عوض می‌شه. چون اجرای واقعی کوئری تا لحظه‌ای که نتیجه‌ش نیاز نباشه، به تاخیر می‌افته.

‏برای جلوگیری از این اتفاق، می‌تونی از `ToList()` یا `ToArray()` استفاده کنی تا نتیجه کوئری رو همون لحظه materialize کنی و دیگه به منبع داده وابسته نباشی.

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