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

آیدی ادمین:
@ma_limbs
Download Telegram
🌱🌱 نکته روز #HTML

🟣 موضوع : ‏استفاده از تگ‌های HTML در طراحی فروشگاه‌های اینترنتی

🌿🌿 ‏ایجاد سبد خرید با ساختار جدولی یا لیستی: نمایش محتویات سبد خرید باید به صورت واضح و سازمان‌یافته باشد. می‌توانید از تگ <table> برای ساختار جدولی (شامل نام محصول، تعداد، قیمت واحد، قیمت کل، دکمه حذف) یا از یک لیست (<ul> یا <ol>) برای نمایش هر آیتم سبد خرید استفاده کنید. استفاده از ساختار مناسب به کاربر کمک می‌کند تا محتویات سبد خود را به راحتی مدیریت کند.

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

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

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

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

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
‏تفاوت Incremental Generator و Full Generator در C# چیست؟ 🤔

‏Incremental Generator خروجی را به‌تدریج تولید می‌کند و برای پروژه‌های بزرگ با کامپایل طولانی مناسب است. ⏱️ این روش فقط بخش‌های تغییریافته کد را پردازش می‌کند.

‏در مقابل، Full Generator کل کد را در هر بار اجرا دوباره تولید می‌کند. 🔄 این روش ساده‌تر است اما برای پروژه‌های بزرگتر کُندتر خواهد بود.

https://t.me/csharp7
‏ویژگی `SkipLocalsInit` در C#‎، از مقداردهی اولیه متغیرهای محلی در متدها جلوگیری می‌کنه.

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

‏البته باید مراقب باشید که این کار می‌تونه باعث رفتار غیرقابل پیش‌بینی بشه اگه متغیری رو قبل از مقدار دادن بهش، استفاده کنید. ⚠️
‏به طور کلی، استفاده از این ویژگی فقط در موارد خاص و با دقت توصیه می‌شه. 🤔

https://t.me/csharp7
‏حلقه ها رو چطور متوقف یا کنترل کنیم؟ 🤔

‏`break`: کلا از حلقه میاد بیرون! دیگه هیچی اجرا نمیشه. 🚪

‏`continue`: این دور رو رد میکنه، میره دور بعدی. 🏃‍♀️

‏یه مثال ساده:

```python
for i in range(5):
if i == 2:
continue
‏ print(i) # خروجی: 0 1 3 4
```
‏عدد ۲ چاپ نشد!😎
#پایتون #آموزش

https://t.me/python7ir
‏C#‎ در مرورگر؟! 🤔 بله، با Blazor WASM ممکنه!

‏کدهای C#‎ شما به WebAssembly کامپایل میشن و مستقیماً توی مرورگر اجرا میشن. دیگه خبری از JavaScript سمت کلاینت نیست! 🚀

‏این یعنی سرعت بالاتر و امنیت بیشتر برای برنامه‌های تحت وب. 🛡️

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

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

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

🟣 موضوع : ‏بررسی مفاهیم Default Interface Methods

🟢 سوال :

‏کدام یک از موارد زیر یک کاربرد پیشرفته Default Interface Methods است؟

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

گزینه ۲:
‏ایجاد الگوهای طراحی تابعی با استفاده از رابط‌ها

گزینه ۳:
‏محاسبات ریاضی ساده

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

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

🟢 توضیح :

‏ایجاد الگوهای طراحی تابعی با استفاده از رابط‌ها، یک کاربرد پیشرفته Default Interface Methods است.

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

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

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

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

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

🟣 Eclipse

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

🟣 دوره آموزش Eclipse


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

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

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

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

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

‏مثال:
using System;

public class Example
{
‏ // تعریف یک متد بدون پارامتر و بدون مقدار بازگشتی
public static void Greet()
{
‏ Console.WriteLine("سلام به دنیای C#!");
}

public static void Main(string[] args)
{
‏ // فراخوانی متد Greet
Greet();
}
}

‏در این مثال، متد Greet هیچ پارامتری دریافت نمی‌کند و هیچ مقداری را باز نمی‌گرداند. کلمه کلیدی void نشان می‌دهد که متد پس از اجرای دستورات خود، کنترلی به نقطه فراخوانی باز نمی‌گرداند. این نوع متدها معمولاً برای انجام عملیاتی استفاده می‌شوند که نیازی به بازگرداندن نتیجه یا دریافت اطلاعات ورودی ندارند، مانند نمایش پیام یا انجام یک عمل جانبی. 🚀

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

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
🔵 کوییز #HTML

🟣 موضوع : ‏مقدمه‌ای بر HTML

🟢 سوال :

‏کدام تگ HTML برای ایجاد یک خط افقی جداکننده در محتوا استفاده می‌شود؟

گزینه ۱:
`<break>`

گزینه ۲:
`<line>`

گزینه ۳:
`<hr>`

گزینه ۴:
`<separator>`



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

🟢 توضیح :

‏تگ `<hr>` (horizontal rule) برای ایجاد یک خط افقی که می‌تواند برای جدا کردن محتوای مختلف در یک صفحه وب استفاده شود، به کار می‌رود. این تگ یک تگ خود-بسته است.

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

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

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

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

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

```csharp
list.Where(x => x is string s).Select(x => (string)x);
```

‏این کد، هم نوع رو بررسی می‌کنه (string بودن) و هم اون رو به یه متغیر جدید (s) تبدیل می‌کنه. 👌💻

https://t.me/csharp7
‏در زبان C#، interfaceها قراردادهایی را تعریف می‌کنند که کلاس‌ها می‌توانند آن‌ها را پیاده‌سازی کنند. این امر به ایجاد پیمان‌نامه‌های رفتاری کمک کرده و امکان پلی‌مورفیسم را فراهم می‌آورد.

‏در نسخه‌های جدیدتر C#، قابلیتی به نام Default Implementations به interfaceها اضافه شده است. این قابلیت به شما اجازه می‌دهد تا یک پیاده‌سازی پیش‌فرض برای متدها در خود interface ارائه دهید. این موضوع مزایای قابل توجهی دارد:

سازگاری با نسخه‌های قبلی (Backward Compatibility): هنگامی که یک متد جدید به یک `interface` موجود اضافه می‌شود، کلاس‌هایی که قبلاً آن `interface` را پیاده‌سازی کرده‌اند، بدون نیاز به تغییر، همچنان کار خواهند کرد. چون پیاده‌سازی پیش‌فرض در `interface` به آن‌ها کمک می‌کند.
کاهش کدهای تکراری: اگر پیاده‌سازی یک متد برای بسیاری از کلاس‌ها یکسان باشد، می‌توان آن را به صورت پیش‌فرض در interface تعریف کرد و از تکرار کد جلوگیری نمود.

‏این ویژگی، انعطاف‌پذیری C# را در طراحی سیستم‌های پیچیده و مدیریت تکامل کد افزایش می‌دهد. 🚀💡

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#، اعتبارسنجی ورودی‌های کاربر برای جلوگیری از مشکلات امنیتی، به‌خصوص هنگام کار با پایگاه داده، امری حیاتی است. این اعتبارسنجی می‌تواند شامل بررسی نوع داده، طول مجاز، وجود کاراکترهای خاص و جلوگیری از حملات تزریق SQL باشد.

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

using System.Text.RegularExpressions;

public class InputValidator
{
public static bool IsValidUsername(string username)
{
‏ // اجازه دادن فقط به حروف الفبا، اعداد و خط تیره
string pattern = @"^[a-zA-Z0-9_-]+$";
return Regex.IsMatch(username, pattern);
}
}


‏همچنین، برای جلوگیری از حملات تزریق SQL، هرگز نباید ورودی کاربر را مستقیماً در کوئری SQL قرار دهید. استفاده از پارامترهای آماده (Parameterized Queries) راه حل امنی است.

using System.Data.SqlClient;

public class DatabaseManager
{
public void AddUser(string username, string email)
{
string connectionString = "YourConnectionString";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "INSERT INTO Users (Username, Email) VALUES (@Username, @Email)";
using (SqlCommand command = new SqlCommand(query, connection))
{
‏ // استفاده از پارامترها برای جلوگیری از تزریق SQL
command.Parameters.AddWithValue("@Username", username);
command.Parameters.AddWithValue("@Email", email);

command.ExecuteNonQuery();
}
}
}
}


‏اعتبارسنجی در سمت سرور همیشه باید انجام شود، حتی اگر در سمت کلاینت نیز اعتبارسنجی انجام شده باشد. این لایه دفاعی اضافی، امنیت برنامه شما را به طور قابل توجهی افزایش می‌دهد. 🛡️

https://t.me/csharp7
This media is not supported in your browser
VIEW IN TELEGRAM
🔵 C# Beginners Tutorial - 111 - Editing XML File

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

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

🟣 C# Beginners Tutorials Playlist

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


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
‏پایتون بازا سلام! 👋

‏تاحالا شده تو کدتون یه مقداری رو برگردونید ولی بهش نیاز نداشته باشید؟ 🤔

‏پایتون یه راه حل باحال داره: `_`

```python
x, _ = (10, 20)
print(x) # Output: 10
```

‏اینجا `_` مقدار 20 رو میگیره ولی هیچ جا استفاده نمیشه! 😎 خیلی تمیز و مرتب، نه؟ 👌
#پایتون #ترفند

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

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

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
SortedList<TKey, TValue> و SortedDictionary<TKey, TValue> هر دو برای نگهداری داده‌های مرتب شده بر اساس کلید استفاده می‌شوند، اما تفاوت‌های اساسی در نحوه پیاده‌سازی و عملکرد دارند.

SortedList<TKey, TValue> در واقع ترکیبی از دو آرایه است: یکی برای کلیدها و دیگری برای مقادیر. این ساختار برای جستجو و بازیابی سریع است، زیرا کلیدها و مقادیر در دو آرایه جداگانه ذخیره می‌شوند و می‌توان از جستجوی دودویی (binary search) برای یافتن عناصر استفاده کرد. این امر باعث می‌شود که عملیات Add و Remove نسبتاً کند باشند، زیرا نیاز به جابجایی عناصر در آرایه‌ها دارند.

‏در مقابل، SortedDictionary<TKey, TValue> از یک ساختار داده درختی (معمولاً درخت قرمز-سیاه) استفاده می‌کند. این ساختار برای افزودن و حذف عناصر بهینه است، زیرا نیازی به جابجایی تعداد زیادی عنصر نیست. با این حال، ممکن است در بازیابی عناصر کمی کندتر از SortedList عمل کند.

‏به طور خلاصه:

`SortedList`: برای سناریوهایی که تعداد عملیات بازیابی (مانند `TryGetValue` یا دسترسی با ایندکس) بیشتر از عملیات افزودن و حذف است، مناسب‌تر است. همچنین اگر نیاز به دسترسی به عناصر بر اساس ایندکس عددی دارید، `SortedList` این قابلیت را ارائه می‌دهد.
SortedDictionary: برای سناریوهایی که تعداد عملیات افزودن و حذف داده‌ها زیاد است و نیاز به حفظ مرتب بودن داده‌ها دارید، انتخاب بهتری است.

‏هر دو مجموعه تضمین می‌کنند که عناصر بر اساس کلید مرتب شده‌اند.

using System;
using System.Collections.Generic;

public class Example
{
public static void Main(string[] args)
{
‏ // مثال با SortedList
SortedList<int, string> sortedList = new SortedList<int, string>();
sortedList.Add(3, "Three");
sortedList.Add(1, "One");
sortedList.Add(2, "Two");

Console.WriteLine("SortedList:");
foreach (var kvp in sortedList)
{
Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
}

‏ // مثال با SortedDictionary
SortedDictionary<int, string> sortedDictionary = new SortedDictionary<int, string>();
sortedDictionary.Add(3, "Three");
sortedDictionary.Add(1, "One");
sortedDictionary.Add(2, "Two");

Console.WriteLine("\nSortedDictionary:");
foreach (var kvp in sortedDictionary)
{
Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
}
}
}


‏هر دو مجموعه داده‌ها را به ترتیب کلید مرتب می‌کنند. SortedList از دو آرایه برای ذخیره داده‌ها استفاده می‌کند که بازیابی را سریع می‌کند اما افزودن و حذف را کندتر، در حالی که SortedDictionary از ساختار درختی استفاده می‌کند که افزودن و حذف را بهینه می‌کند. 🌳

https://t.me/csharp7