🔵 دوست داری برنامه نویس حرفه ای بشی یا مهارت های کامپیوتری خودت رو افزایش بدی؟ با عضویت در لیست تلگرامی زیر در بی نظیر ترین کانال های برنامه نویسی ما عضو شوید:
🟢 پایتون، هوش مصنوعی، یادگیری ماشین، سی ++، سی شارپ، دات نت، نود جی اس، جاوا اسکریپت، شبکه، علم داده، پایگاه داده، sql، nosql ، مهارت های ICDL، سیستم عامل، لینوکس، فتوشاپ، گرافیک، اندروید، جاوا، ساخت اپلیکیشن موبایل، ری اکت، جی کوئری، php و laravel، دروس رشته کامپیوتر، کنکور کامپیوتر و ...
عضو لیست جامع شوید:
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
🟢 پایتون، هوش مصنوعی، یادگیری ماشین، سی ++، سی شارپ، دات نت، نود جی اس، جاوا اسکریپت، شبکه، علم داده، پایگاه داده، sql، nosql ، مهارت های ICDL، سیستم عامل، لینوکس، فتوشاپ، گرافیک، اندروید، جاوا، ساخت اپلیکیشن موبایل، ری اکت، جی کوئری، php و laravel، دروس رشته کامپیوتر، کنکور کامپیوتر و ...
عضو لیست جامع شوید:
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
Telegram
برنامه نویسی
You’ve been invited to add the folder “برنامه نویسی”, which includes 55 chats.
حلقه
برای مثال، اگر بخواهید تمام کاراکترهای یک رشته را تا زمانی که به کاراکتر خاصی (مانند نقطه) نرسیدهاید، بخوانید، میتوانید از
این روش به شما امکان میدهد تا به صورت پویا با دادههای متنی کار کرده و عملیات را بر اساس شرایط در حال تغییر انجام دهید. 🧐✨
https://t.me/csharp7
while در C# ابزاری قدرتمند برای تکرار عملیات تا زمانی که شرط مشخصی برقرار باشد، است. این حلقه به ویژه در پردازش رشتهها و کاراکترها کاربرد فراوانی دارد.برای مثال، اگر بخواهید تمام کاراکترهای یک رشته را تا زمانی که به کاراکتر خاصی (مانند نقطه) نرسیدهاید، بخوانید، میتوانید از
while استفاده کنید:string text = "این یک مثال است. پایان.";
int index = 0;
while (index < text.Length && text[index] != '.')
{
Console.Write(text[index]);
index++;
}
// خروجی: این یک مثال است
این روش به شما امکان میدهد تا به صورت پویا با دادههای متنی کار کرده و عملیات را بر اساس شرایط در حال تغییر انجام دهید. 🧐✨
https://t.me/csharp7
در C#، اعضای یک کلاس (متغیرها و متدها) دارای محدوده دسترسی مشخصی هستند که تعیین میکند از کجا قابل دسترسی باشند. این محدوده دسترسی با استفاده از کلمات کلیدی مانند
`public`: اعضای `public` از هر کجای برنامه قابل دسترسی هستند.
`protected`: اعضای `protected` در داخل همان کلاس و همچنین در کلاسهای مشتق شده (کلاسهایی که از این کلاس ارث میبرند) قابل دسترسی هستند.
برای دسترسی به اعضای یک کلاس از خارج آن کلاس، ابتدا باید یک شیء (Object) از آن کلاس ایجاد کنید. سپس با استفاده از عملگر نقطه (
به عنوان مثال:
دسترسی به اعضای کلاس، کپسولهسازی (Encapsulation) را تضمین میکند و به شما اجازه میدهد تا جزئیات پیادهسازی را از دید کاربران کلاس پنهان نگه دارید. 🔒 encapsulation 캡슐화
https://t.me/csharp7
public، private، protected و internal مشخص میشود. `public`: اعضای `public` از هر کجای برنامه قابل دسترسی هستند.
private: اعضای private فقط در داخل همان کلاسی که تعریف شدهاند، قابل دسترسی هستند. این نوع دسترسی پیشفرض برای اعضای کلاس است. `protected`: اعضای `protected` در داخل همان کلاس و همچنین در کلاسهای مشتق شده (کلاسهایی که از این کلاس ارث میبرند) قابل دسترسی هستند.
internal: اعضای internal فقط در داخل همان اسمبلی (پروژه) که تعریف شدهاند، قابل دسترسی هستند.برای دسترسی به اعضای یک کلاس از خارج آن کلاس، ابتدا باید یک شیء (Object) از آن کلاس ایجاد کنید. سپس با استفاده از عملگر نقطه (
.) میتوانید به اعضای public آن شیء دسترسی پیدا کنید.به عنوان مثال:
public class MyClass
{
public int publicVariable = 10;
private string privateVariable = "Hello";
public void PublicMethod()
{
Console.WriteLine("This is a public method.");
PrivateMethod(); // دسترسی به متد private از داخل کلاس مجاز است
}
private void PrivateMethod()
{
Console.WriteLine("This is a private method.");
}
}
// در جای دیگر از برنامه:
MyClass myObject = new MyClass();
Console.WriteLine(myObject.publicVariable); // دسترسی مجاز به متغیر public
myObject.PublicMethod(); // دسترسی مجاز به متد public
// Console.WriteLine(myObject.privateVariable); // خطا: دسترسی مجاز نیست
// myObject.PrivateMethod(); // خطا: دسترسی مجاز نیست
دسترسی به اعضای کلاس، کپسولهسازی (Encapsulation) را تضمین میکند و به شما اجازه میدهد تا جزئیات پیادهسازی را از دید کاربران کلاس پنهان نگه دارید. 🔒 encapsulation 캡슐화
https://t.me/csharp7
Telegram
آموزش C# و .Net
تعرفه تبلیغات :
https://t.me/+w-o6dHW5O31jMWNk
آیدی ادمین:
@ma_limbs
https://t.me/+w-o6dHW5O31jMWNk
آیدی ادمین:
@ma_limbs
💠 عضو جامع ترین کانال های توسعه فردی، روانشناسی و موفقیت شوید:
➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0
➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0
شامل موضوعات آموزشی زیر:
توسعه و رشد فردی
افزایش ثروت
هدف گذاری و مدیریت زمان
مهارت های اجتماعی، ارتباطی و فن بیان
روانشناسی و خودیاری
موفقیت
عادات موثر
سلامت و تغذیه سالم
موفقیت شغلی
عبارات تاکیدی
مدیریت اضطراب و خشم
روان درمانی CBT و ACT
شخصیت شناسی و تحلیل روانشناسی
انگیزشی
کودک درون
تکنیک های NLP
یوگا
افزایش حافظه
مدیتیشن
موفقیت تحصیلی
مطالعه موثر
افزایش اعتماد به نفس
افزایش تمرکز
تفکر مثبت
افزایش خلاقیت
نقل قول های انگیزشی
با کلیک بر روی لینک زیر عضو تمامی این کانال ها شوید:
➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0
➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0
➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0
➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0
شامل موضوعات آموزشی زیر:
توسعه و رشد فردی
افزایش ثروت
هدف گذاری و مدیریت زمان
مهارت های اجتماعی، ارتباطی و فن بیان
روانشناسی و خودیاری
موفقیت
عادات موثر
سلامت و تغذیه سالم
موفقیت شغلی
عبارات تاکیدی
مدیریت اضطراب و خشم
روان درمانی CBT و ACT
شخصیت شناسی و تحلیل روانشناسی
انگیزشی
کودک درون
تکنیک های NLP
یوگا
افزایش حافظه
مدیتیشن
موفقیت تحصیلی
مطالعه موثر
افزایش اعتماد به نفس
افزایش تمرکز
تفکر مثبت
افزایش خلاقیت
نقل قول های انگیزشی
با کلیک بر روی لینک زیر عضو تمامی این کانال ها شوید:
➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0
➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0
Telegram
موفقیت
You’ve been invited to add the folder “موفقیت”, which includes 26 chats.
گاهی در مدیریت خطا، نیاز داریم استثنایی را که دریافت کردهایم، دوباره پرتاب کنیم. این کار به لایههای بالاتر برنامه اجازه میدهد تا استثنا را مدیریت کنند یا اطلاعات بیشتری به آن اضافه کنند.
سناریوی ۱: پرتاب مجدد استثنا با حفظ اطلاعات اصلی
فرض کنید تابعی داریم که دادهای را از فایل میخواند و در صورت بروز خطا در خواندن فایل، استثنایی پرتاب میکند. اگر این تابع بخواهد استثنا را دوباره پرتاب کند، میتواند از
سناریوی ۲: پرتاب مجدد استثنا با اضافه کردن اطلاعات جدید (Wrapper Exception)
در برخی موارد، ممکن است بخواهیم استثنای اصلی را درون یک استثنای جدید پرتاب کنیم. این کار به ما امکان میدهد تا زمینه بیشتری را فراهم کنیم یا نوع استثنا را برای مدیریت بهتر تغییر دهیم.
در این مثال،
https://t.me/csharp7
سناریوی ۱: پرتاب مجدد استثنا با حفظ اطلاعات اصلی
فرض کنید تابعی داریم که دادهای را از فایل میخواند و در صورت بروز خطا در خواندن فایل، استثنایی پرتاب میکند. اگر این تابع بخواهد استثنا را دوباره پرتاب کند، میتواند از
throw; استفاده کند. این دستور استثنای فعلی را بدون تغییر به لایههای بالاتر منتقل میکند.public void ReadDataFromFile(string filePath)
{
try
{
// منطق خواندن داده از فایل
// ...
if (/* خطایی در خواندن رخ داده */)
{
throw new IOException("خطا در خواندن فایل.");
}
}
catch (IOException ex)
{
// لاگ کردن خطا یا انجام عملیات دیگر
Console.WriteLine($"خطا در ReadDataFromFile: {ex.Message}");
throw; // پرتاب مجدد استثنای اصلی
}
}
سناریوی ۲: پرتاب مجدد استثنا با اضافه کردن اطلاعات جدید (Wrapper Exception)
در برخی موارد، ممکن است بخواهیم استثنای اصلی را درون یک استثنای جدید پرتاب کنیم. این کار به ما امکان میدهد تا زمینه بیشتری را فراهم کنیم یا نوع استثنا را برای مدیریت بهتر تغییر دهیم.
public void ProcessUserData(int userId)
{
try
{
// منطق پردازش داده کاربر
// ...
if (/* خطایی در پردازش رخ داده */)
{
throw new InvalidOperationException("داده کاربر نامعتبر است.");
}
}
catch (InvalidOperationException ex)
{
// پرتاب استثنای جدید با ارجاع به استثنای اصلی
throw new UserProcessingException($"خطا در پردازش کاربر با شناسه {userId}.", ex);
}
}
public class UserProcessingException : Exception
{
public UserProcessingException(string message, Exception innerException) : base(message, innerException)
{
}
}
در این مثال،
UserProcessingException استثنای اصلی InvalidOperationException را در خود جای داده و اطلاعات مربوط به شناسه کاربر را نیز اضافه کرده است. این به لایههای بالاتر کمک میکند تا هم خطای اصلی را بفهمند و هم زمینه وقوع آن را. 📂⚙️https://t.me/csharp7
Telegram
آموزش C# و .Net
تعرفه تبلیغات :
https://t.me/+w-o6dHW5O31jMWNk
آیدی ادمین:
@ma_limbs
https://t.me/+w-o6dHW5O31jMWNk
آیدی ادمین:
@ma_limbs
🔵 کوییز #سی_شارپ
🟣 موضوع : ویژگیهای جدید در C#
🟢 سوال :
کدام یک از موارد زیر یک ویژگی جدید در C# برای کار با توابع بازگشتی است؟
گزینه ۱:
حلقههای for
گزینه ۲:
دستورات switch
گزینه ۳:
Tail-Call Optimization
گزینه ۴:
کلاسهای generic
🔵 گزینه صحیح:3
🟢 توضیح :
Tail-Call Optimization یک ویژگی جدید در C# برای بهینهسازی توابع بازگشتی است.
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
لطفا ما رو به دیگران هم معرفی کنید...
آدرس کانال اصلی :
https://t.me/Tu_24
آدرس وبسایت:
https://Tutorial24.ir
🟣 موضوع : ویژگیهای جدید در C#
🟢 سوال :
کدام یک از موارد زیر یک ویژگی جدید در C# برای کار با توابع بازگشتی است؟
گزینه ۱:
حلقههای for
گزینه ۲:
دستورات switch
گزینه ۳:
Tail-Call Optimization
گزینه ۴:
کلاسهای generic
🔵 گزینه صحیح:
🟢 توضیح :
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
لطفا ما رو به دیگران هم معرفی کنید...
آدرس کانال اصلی :
https://t.me/Tu_24
آدرس وبسایت:
https://Tutorial24.ir
Telegram
آموزش کامپیوتر و برنامه نویسی tu24
* برنامه نویسی
* علوم کامپیوتر
* ریاضیات مورد نیاز علوم کامپیوتر
* هوش مصنوعی
* علوم داده
* داده کاوی
* بیگ دیتا
* پیشنهادات، تبلیغات و تبادل و ... : @ma_limbs
* تعرفه تبلیغات:
https://t.me/+w-o6dHW5O31jMWNk
* علوم کامپیوتر
* ریاضیات مورد نیاز علوم کامپیوتر
* هوش مصنوعی
* علوم داده
* داده کاوی
* بیگ دیتا
* پیشنهادات، تبلیغات و تبادل و ... : @ma_limbs
* تعرفه تبلیغات:
https://t.me/+w-o6dHW5O31jMWNk
❤1
ویژگی جالب C# 11:
از این پس اینترفیسها میتوانند اعضای `abstract static` داشته باشند. یعنی میتوان یک قرارداد برای پیادهسازی متدهای `static` در کلاسهایی که آن اینترفیس را پیادهسازی میکنند، تعریف کرد.
این قابلیت، امکان ایجاد الگوهای طراحی منعطفتری را فراهم میکند. ⚙️
به عنوان مثال، میتوان یک اینترفیس برای کارخانههای تولید اشیا تعریف کرد و هر کلاس، پیادهسازی خاص خود را از متد `static` تولید شی ارائه دهد. 🏭
همچنین، این ویژگی به generic math نیز کمک شایانی میکند. ➕
https://t.me/csharp7
از این پس اینترفیسها میتوانند اعضای `abstract static` داشته باشند. یعنی میتوان یک قرارداد برای پیادهسازی متدهای `static` در کلاسهایی که آن اینترفیس را پیادهسازی میکنند، تعریف کرد.
این قابلیت، امکان ایجاد الگوهای طراحی منعطفتری را فراهم میکند. ⚙️
به عنوان مثال، میتوان یک اینترفیس برای کارخانههای تولید اشیا تعریف کرد و هر کلاس، پیادهسازی خاص خود را از متد `static` تولید شی ارائه دهد. 🏭
همچنین، این ویژگی به generic math نیز کمک شایانی میکند. ➕
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
🟢 پایتون، هوش مصنوعی، یادگیری ماشین، سی ++، سی شارپ، دات نت، نود جی اس، جاوا اسکریپت، شبکه، علم داده، پایگاه داده، sql، nosql ، مهارت های ICDL، سیستم عامل، لینوکس، فتوشاپ، گرافیک، اندروید، جاوا، ساخت اپلیکیشن موبایل، ری اکت، جی کوئری، php و laravel، دروس رشته کامپیوتر، کنکور کامپیوتر و ...
عضو لیست جامع شوید:
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
Telegram
برنامه نویسی
You’ve been invited to add the folder “برنامه نویسی”, which includes 55 chats.
در توسعه وب با ASP.NET Core، استفاده از ViewModels نقش کلیدی در سازماندهی و انتقال امن دادهها بین کنترلر و نما (View) ایفا میکند. ViewModels اشیاء سفارشی هستند که برای نمایش یک نمای خاص طراحی شدهاند و تنها اطلاعات مورد نیاز آن نما را در بر میگیرند. این رویکرد به جدا کردن منطق نمایش از منطق دامنه (Domain Logic) کمک کرده و کد را خواناتر و قابل نگهداریتر میسازد.
به عنوان مثال، فرض کنید برای نمایش جزئیات یک محصول نیاز به نمایش نام محصول، قیمت و نام دستهبندی آن دارید. به جای ارسال مستقیم یک مدل دامنه پیچیده که ممکن است شامل اطلاعات اضافی باشد، میتوانید یک ViewModel تعریف کنید:
سپس در کنترلر، دادههای مورد نیاز را استخراج کرده و در این ViewModel قرار میدهید:
و در نهایت، در فایل Razor View مربوطه، از این ViewModel برای نمایش اطلاعات استفاده میکنید:
استفاده از ViewModels به جلوگیری از مشکلات امنیتی مانند Over-posting (ارسال دادههای ناخواسته از سمت کلاینت) نیز کمک میکند، زیرا شما دقیقاً مشخص میکنید چه دادههایی باید از کنترلر به نما منتقل شوند. 🚀✨
https://t.me/csharp7
به عنوان مثال، فرض کنید برای نمایش جزئیات یک محصول نیاز به نمایش نام محصول، قیمت و نام دستهبندی آن دارید. به جای ارسال مستقیم یک مدل دامنه پیچیده که ممکن است شامل اطلاعات اضافی باشد، میتوانید یک ViewModel تعریف کنید:
public class ProductDetailViewModel
{
public string ProductName { get; set; }
public decimal Price { get; set; }
public string CategoryName { get; set; }
}
سپس در کنترلر، دادههای مورد نیاز را استخراج کرده و در این ViewModel قرار میدهید:
public IActionResult ProductDetails(int id)
{
// فرض کنید این دادهها از دیتابیس یا سرویس دیگری دریافت میشوند
var product = GetProductById(id);
var category = GetCategoryById(product.CategoryId);
var viewModel = new ProductDetailViewModel
{
ProductName = product.Name,
Price = product.Price,
CategoryName = category.Name
};
return View(viewModel);
}
و در نهایت، در فایل Razor View مربوطه، از این ViewModel برای نمایش اطلاعات استفاده میکنید:
@model YourProject.ViewModels.ProductDetailViewModel
<h2>@Model.ProductName</h2>
<p>Price: @Model.Price.ToString("C")</p>
<p>Category: @Model.CategoryName</p>
استفاده از ViewModels به جلوگیری از مشکلات امنیتی مانند Over-posting (ارسال دادههای ناخواسته از سمت کلاینت) نیز کمک میکند، زیرا شما دقیقاً مشخص میکنید چه دادههایی باید از کنترلر به نما منتقل شوند. 🚀✨
https://t.me/csharp7
Telegram
آموزش C# و .Net
تعرفه تبلیغات :
https://t.me/+w-o6dHW5O31jMWNk
آیدی ادمین:
@ma_limbs
https://t.me/+w-o6dHW5O31jMWNk
آیدی ادمین:
@ma_limbs
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید:
🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... :
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... :
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
Telegram
زبان
You’ve been invited to add the folder “زبان”, which includes 50 chats.
ویژگی جالب C# 🛠️
با کلمه کلیدی `field`، در Propertyها مستقیماً به فیلد پشتیبان (backing field) دسترسی پیدا کنید. دیگه نیازی به تعریف فیلد جداگانه نیست!
```csharp
public string Name {
get => field ?? "N/A";
set => field = value;
}
```
اینطوری کدتون خواناتر میشه 👌
https://t.me/csharp7
با کلمه کلیدی `field`، در Propertyها مستقیماً به فیلد پشتیبان (backing field) دسترسی پیدا کنید. دیگه نیازی به تعریف فیلد جداگانه نیست!
```csharp
public string Name {
get => field ?? "N/A";
set => field = value;
}
```
اینطوری کدتون خواناتر میشه 👌
https://t.me/csharp7
Extension methods رو که بلدید؟ 😎
Extension properties و extension operators هم داریم!
با این دوتا، میشه بدون اینکه کلاس یا ساختار رو دست بزنید، property یا operator جدید بهش اضافه کنید. خیلی جاها کار رو راه میندازه. 👌
https://t.me/csharp7
Extension properties و extension operators هم داریم!
با این دوتا، میشه بدون اینکه کلاس یا ساختار رو دست بزنید، property یا operator جدید بهش اضافه کنید. خیلی جاها کار رو راه میندازه. 👌
https://t.me/csharp7
در C#، متد
استفاده از
https://t.me/csharp7
Peek() در کلاس Queue<T> به شما امکان میدهد تا اولین عنصر موجود در صف را بدون حذف آن مشاهده کنید. این قابلیت زمانی مفید است که نیاز دارید به اطلاعات اولین آیتم دسترسی داشته باشید اما نمیخواهید آن را از صف خارج کنید.using System;
using System.Collections.Generic;
public class Example
{
public static void Main(string[] args)
{
Queue<string> myQueue = new Queue<string>();
myQueue.Enqueue("Apple");
myQueue.Enqueue("Banana");
myQueue.Enqueue("Cherry");
// دسترسی به اولین عنصر بدون حذف
string firstItem = myQueue.Peek();
Console.WriteLine($"First item is: {firstItem}"); // خروجی: First item is: Apple
// صف همچنان شامل همه عناصر است
Console.WriteLine($"Queue count: {myQueue.Count}"); // خروجی: Queue count: 3
}
}
استفاده از
Peek() یک روش کارآمد برای بررسی وضعیت صف است. 🍎📊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
🟢 پایتون، هوش مصنوعی، یادگیری ماشین، سی ++، سی شارپ، دات نت، نود جی اس، جاوا اسکریپت، شبکه، علم داده، پایگاه داده، sql، nosql ، مهارت های ICDL، سیستم عامل، لینوکس، فتوشاپ، گرافیک، اندروید، جاوا، ساخت اپلیکیشن موبایل، ری اکت، جی کوئری، php و laravel، دروس رشته کامپیوتر، کنکور کامپیوتر و ...
عضو لیست جامع شوید:
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
https://t.me/addlist/_UjG99eD_E4zYzhk
Telegram
برنامه نویسی
You’ve been invited to add the folder “برنامه نویسی”, which includes 55 chats.
در C#، عملیات فشردهسازی و استخراج فایلها میتواند بسته به حجم داده و الگوریتم مورد استفاده، تاثیر قابل توجهی بر عملکرد برنامه داشته باشد. برای مدیریت این عملیات، کتابخانههای مختلفی وجود دارند، اما
برای فشردهسازی یک فایل، میتوان از کلاس
مثال ساده فشردهسازی:
برای استخراج فایل فشرده شده، فرآیند معکوس انجام میشود. با استفاده از
مثال ساده استخراج:
نکات بهینهسازی:
انتخاب سطح فشردهسازی: کلاس `GZipStream` و `DeflateStream` پارامتری به نام `CompressionLevel` دارند که میتواند `NoCompression`، `FastestCompression`، `Optimal` یا مقادیر بین اینها باشد. `Optimal` بهترین فشردهسازی را ارائه میدهد اما کندتر است، در حالی که `FastestCompression` سریعتر است اما فشردهسازی کمتری دارد. انتخاب مناسب بر اساس نیاز برنامه (سرعت در مقابل حجم) مهم است.
مدیریت حافظه: برای فایلهای بسیار بزرگ، استفاده از
استفاده از `MemoryStream`: در سناریوهایی که نیاز به فشردهسازی یا استخراج دادهها در حافظه دارید (بدون نیاز به فایل فیزیکی)، میتوانید از `MemoryStream` به جای `FileStream` استفاده کنید.
الگوریتمهای جایگزین: برای نیازهای خاصتر یا عملکرد بالاتر، ممکن است نیاز به بررسی کتابخانههای شخص ثالث مانند
عملیات I/O، به خصوص فشردهسازی و استخراج، میتواند گلوگاه برنامه باشد. درک نحوه استفاده صحیح از ابزارهای موجود و انتخاب گزینههای بهینه، به بهبود کلی عملکرد کمک شایانی میکند. 💾⚙️
https://t.me/csharp7
System.IO.Compression یکی از ابزارهای داخلی قدرتمند در .NET است.برای فشردهسازی یک فایل، میتوان از کلاس
GZipStream یا DeflateStream استفاده کرد. این کلاسها امکان نوشتن دادهها را به صورت فشرده در یک فایل یا استریم دیگر فراهم میکنند.مثال ساده فشردهسازی:
using System.IO;
using System.IO.Compression;
// ...
string sourceFilePath = "original.txt";
string compressedFilePath = "compressed.gz";
using (FileStream originalFileStream = new FileStream(sourceFilePath, FileMode.Open))
using (FileStream compressedFileStream = new FileStream(compressedFilePath, FileMode.Create))
using (GZipStream compressionStream = new GZipStream(compressedFileStream, CompressionLevel.Optimal))
{
originalFileStream.CopyTo(compressionStream);
}
برای استخراج فایل فشرده شده، فرآیند معکوس انجام میشود. با استفاده از
GZipStream یا DeflateStream در حالت خواندن، میتوان دادههای فشرده را خوانده و به صورت اصلی در یک فایل دیگر نوشت.مثال ساده استخراج:
using System.IO;
using System.IO.Compression;
// ...
string compressedFilePath = "compressed.gz";
string extractedFilePath = "extracted.txt";
using (FileStream compressedFileStream = new FileStream(compressedFilePath, FileMode.Open))
using (FileStream extractedFileStream = new FileStream(extractedFilePath, FileMode.Create))
using (GZipStream decompressionStream = new GZipStream(compressedFileStream, CompressionMode.Decompress))
{
decompressionStream.CopyTo(extractedFileStream);
}
نکات بهینهسازی:
انتخاب سطح فشردهسازی: کلاس `GZipStream` و `DeflateStream` پارامتری به نام `CompressionLevel` دارند که میتواند `NoCompression`، `FastestCompression`، `Optimal` یا مقادیر بین اینها باشد. `Optimal` بهترین فشردهسازی را ارائه میدهد اما کندتر است، در حالی که `FastestCompression` سریعتر است اما فشردهسازی کمتری دارد. انتخاب مناسب بر اساس نیاز برنامه (سرعت در مقابل حجم) مهم است.
مدیریت حافظه: برای فایلهای بسیار بزرگ، استفاده از
CopyTo که به صورت بافری عمل میکند، معمولاً کارآمدتر از خواندن و نوشتن تک به تک بایتها یا قطعات کوچک است. اطمینان حاصل کنید که FileStream و استریمهای فشردهسازی در بلوکهای using قرار میگیرند تا منابع به درستی آزاد شوند. استفاده از `MemoryStream`: در سناریوهایی که نیاز به فشردهسازی یا استخراج دادهها در حافظه دارید (بدون نیاز به فایل فیزیکی)، میتوانید از `MemoryStream` به جای `FileStream` استفاده کنید.
الگوریتمهای جایگزین: برای نیازهای خاصتر یا عملکرد بالاتر، ممکن است نیاز به بررسی کتابخانههای شخص ثالث مانند
DotNetZip یا SharpZipLib باشد که الگوریتمهای فشردهسازی بیشتری (مانند LZMA، BZip2) و قابلیتهای پیشرفتهتری را ارائه میدهند.عملیات I/O، به خصوص فشردهسازی و استخراج، میتواند گلوگاه برنامه باشد. درک نحوه استفاده صحیح از ابزارهای موجود و انتخاب گزینههای بهینه، به بهبود کلی عملکرد کمک شایانی میکند. 💾⚙️
https://t.me/csharp7
Telegram
آموزش C# و .Net
تعرفه تبلیغات :
https://t.me/+w-o6dHW5O31jMWNk
آیدی ادمین:
@ma_limbs
https://t.me/+w-o6dHW5O31jMWNk
آیدی ادمین:
@ma_limbs
TensorPrimitives مجموعهای از APIهای سطح پایین برای انجام عملیات تانسوری در C# هستند. 🧮 این توابع، کارایی بالایی در پردازش دادههای عددی ارائه میدهند و برای توسعهدهندگان حوزههای یادگیری ماشین، هوش مصنوعی و پردازش سیگنال بسیار مفیدند. ➕ با استفاده از TensorPrimitives، میتوان محاسبات پیچیده را با سرعت بیشتری انجام داد. ⚡️
https://t.me/csharp7
https://t.me/csharp7
.NET 10 یک قابلیت جذاب داره: Devirtualization بهبودیافته! 🚀
کامپایلر میتونه متدهای virtual رو که دیگه override نشدن، به صورت static صدا بزنه. این یعنی حذف سربار فراخوانی متد مجازی و افزایش سرعت اجرا. ⚡️
این بهینهسازی، بدون نیاز به تغییر کد، به صورت خودکار انجام میشه و عملکرد برنامههاتون رو ارتقا میده. 😎
https://t.me/csharp7
کامپایلر میتونه متدهای virtual رو که دیگه override نشدن، به صورت static صدا بزنه. این یعنی حذف سربار فراخوانی متد مجازی و افزایش سرعت اجرا. ⚡️
این بهینهسازی، بدون نیاز به تغییر کد، به صورت خودکار انجام میشه و عملکرد برنامههاتون رو ارتقا میده. 😎
https://t.me/csharp7
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید:
🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... :
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... :
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
Telegram
زبان
You’ve been invited to add the folder “زبان”, which includes 50 chats.
دستور
مثال:
دستور
مثال:
این دو دستور ابزارهای قدرتمندی برای کنترل دقیق جریان اجرای حلقهها در C# هستند. 🚀💡
https://t.me/csharp7
break در C# برای خروج فوری از حلقه استفاده میشود. با رسیدن به دستور break، اجرای حلقه متوقف شده و برنامه از اولین خط بعد از حلقه ادامه پیدا میکند.مثال:
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
break; // حلقه در اینجا متوقف میشود
}
Console.WriteLine(i);
}
// خروجی: 0 1 2 3 4
دستور
continue برای رد کردن تکرار فعلی حلقه و رفتن به تکرار بعدی استفاده میشود. با رسیدن به دستور continue، بقیه کدهای داخل حلقه در آن تکرار اجرا نمیشوند و حلقه به سراغ شرط بعدی یا افزایش/کاهش شمارنده میرود.مثال:
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
{
continue; // اگر عدد زوج بود، از این تکرار رد شو
}
Console.WriteLine(i);
}
// خروجی: 1 3 5 7 9
این دو دستور ابزارهای قدرتمندی برای کنترل دقیق جریان اجرای حلقهها در C# هستند. 🚀💡
https://t.me/csharp7
Telegram
آموزش C# و .Net
تعرفه تبلیغات :
https://t.me/+w-o6dHW5O31jMWNk
آیدی ادمین:
@ma_limbs
https://t.me/+w-o6dHW5O31jMWNk
آیدی ادمین:
@ma_limbs
در C# 11 قابلیتی اضافه شده به اسم File-local types. 📜
با استفاده از کلمه کلیدی `file` قبل از `class` یا `struct`، نوعی تعریف میکنید که فقط در همان فایل قابل دسترسی است. 🔒
این کار از تداخل نامها جلوگیری میکند و کپسولهسازی بهتری را در فایلهای بزرگ فراهم میسازد. 👌
https://t.me/csharp7
با استفاده از کلمه کلیدی `file` قبل از `class` یا `struct`، نوعی تعریف میکنید که فقط در همان فایل قابل دسترسی است. 🔒
این کار از تداخل نامها جلوگیری میکند و کپسولهسازی بهتری را در فایلهای بزرگ فراهم میسازد. 👌
https://t.me/csharp7
آرایهها در #C ظرفیت ثابتی دارند.
اما گاهی تعداد آرگومانهای ورودی تابع از قبل مشخص نیست.
کافیه از کلمه کلیدی `params` قبل از تعریف آرایه در پارامترهای ورودی تابع استفاده کنید.
به این شکل، هر تعداد آرگومان همنوع رو میشه به تابع پاس داد.
مثال:
`void MyFunc(params int[] numbers)`
✔️
`MyFunc(1, 2, 3, 4, 5);`
این قابلیت برای پاس دادن کالکشنها هم کاربرد داره. 🧰
فقط یادتون باشه `params` باید آخرین پارامتر ورودی تابع باشه. ⚙️
https://t.me/csharp7
اما گاهی تعداد آرگومانهای ورودی تابع از قبل مشخص نیست.
کافیه از کلمه کلیدی `params` قبل از تعریف آرایه در پارامترهای ورودی تابع استفاده کنید.
به این شکل، هر تعداد آرگومان همنوع رو میشه به تابع پاس داد.
مثال:
`void MyFunc(params int[] numbers)`
✔️
`MyFunc(1, 2, 3, 4, 5);`
این قابلیت برای پاس دادن کالکشنها هم کاربرد داره. 🧰
فقط یادتون باشه `params` باید آخرین پارامتر ورودی تابع باشه. ⚙️
https://t.me/csharp7