Warning: mkdir(): No space left on device in /var/www/tgoop/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/dotnetcode/--): Failed to open stream: No such file or directory in /var/www/tgoop/post.php on line 50
DotNet | دات نت@dotnetcode P.3073
DOTNETCODE Telegram 3073
قسمت شماره ۱: خداحافظی با کدهای تکراری در C# 14!

سلام به همه برنامه‌نویس‌های خفن دات‌نتی! 👋

خبرهای داغ داریم! 🔥 .NET 10 و C# 14 با یه سری ویژگی‌های فوق‌العاده از راه رسیدن که کدنویسی رو خیلی شیرین‌تر می‌کنه. بیاید چندتا از باحال‌ترین‌هاش رو با هم ببینیم:

۱. اپراتور `??=` (انتساب شرطی Null)

یادتونه چقدر if می‌نوشتیم تا چک کنیم یه متغیر null هست یا نه و بعد بهش مقدار بدیم؟ خب، اون دوران تموم شد!

// ----------------
// قبلاً اینجوری بود:
// ----------------
List<string> myStrings = null;
if (myStrings == null)
{
myStrings = new List<string>();
}

// ----------------
// حالا در C# 14:
// ----------------
List<string> myStrings = null;
myStrings ??= new List<string>(); // به همین راحتی!
// اگه null بود، یکی جدید بساز.


۲. کلمه‌ی کلیدی `field` (خداحافظی با Backing Fields!)

یکی از بهترین امکانات جدید! دیگه لازم نیست برای یه Property ساده، یه فیلد private جدا تعریف کنیم. خود C# این کار رو با کلمه field برامون انجام میده:

// ----------------
// قبلاً برای ولیدیشن:
// ----------------
private string _name;
public string Name
{
get => _name;
set
{
if (string.IsNullOrWhiteSpace(value))
throw new ArgumentException("Name cannot be empty");
_name = value;
}
}

// ----------------
// حالا در C# 14:
// ----------------
public string Name
{
get => field; // 'field' همون backing field مخفی ماست
set
{
if (string.IsNullOrWhiteSpace(value))
throw new ArgumentException("Name cannot be empty");
field = value; // مستقیم بهش مقدار می‌دیم 🤯
}
}


۳. اپلیکیشن‌های تک‌فایلی (File-Based Apps)

برای یه تست ساده یا یه اسکریپت کوچیک دیگه نیازی به ساختن پروژه (.csproj) و سلوشن (.sln) نیست! فقط یه فایل .cs بسازید و اجراش کنید:

// یه فایل بساز به اسم Program.cs
Console.WriteLine("سلام دنیا، بدون پروژه!");

// توی ترمینال اجرا کن:
// dotnet run Program.cs

قسمت شماره ۲: .NET 10 برای وب‌کارهای حرفه‌ای!

خب، برگشتیم با قسمت دوم معرفی .NET 10! 💻 این بار می‌خوایم ببینیم تو دنیای وب (ASP.NET)، دیتابیس (EF Core) و بلیزور (Blazor) چه خبره.

۱. ولیدیشن اتوماتیک در Minimal APIs (ASP.NET Core)

قبلاً اعتبارسنجی (Validation) تو Minimal API ها یه کم دردسر داشت. حالا خیلی شیک و اتوماتیک شده. فقط کافیه مدل‌هاتون Data Annotation داشته باشن:
// فقط کافیه این سرویس رو اضافه کنی:
builder.Services.AddValidation();

// و تمام!
app.MapPost("/users", (CreateUserRequest user) =>
{
// اگه 'user' معتبر نباشه (مثلاً ایمیل خالی باشه)
// .NET خودکار خطای 400 Bad Request برمی‌گردونه.
// اصلاً به این خط کد نمی‌رسه!
return Results.Ok(user);
});

// مدل ما:
public class CreateUserRequest
{
[Required]
[EmailAddress]
public string Email { get; set; }

[MinLength(6)]
public string Password { get; set; }
}


۲. آپدیت ستون‌های JSON در EF Core

کار کردن با ستون‌های JSON تو EF Core 10 خیلی قوی‌تر شده. مثلاً حالا می‌تونیم یه تیکه از JSON رو مستقیم آپدیت کنیم، بدون اینکه کل آبجکت رو از دیتابیس بخونیم و برگردونیم!

// فرض کنید یه ستون JSON به اسم 'Profile' داریم
await db.Users
.Where(u => u.Id == 123)
.ExecuteUpdateAsync(s => s
// مستقیم آدرس توی پروفایل رو آپدیت کن
.SetProperty(u => u.Profile["Address"]["City"], "Tehran")
);
// این یعنی پرفورمنس بالاتر! 🔥


۳. هات ریلود (Hot Reload) برای Blazor WebAssembly

اینم خبری که همه‌ی بچه‌های Blazor منتظرش بودن! 🥳 از .NET 10 به بعد، Hot Reload برای Blazor WebAssembly (Wasm) هم به خوبی کار می‌کنه.

یعنی هم کد C# و هم فایل‌های Razor. رو تغییر می‌دید، سیو می‌کنید و *بدون رفرش کردن مرورگر*، تغییرات رو تو صفحه می‌بینید. این یعنی سرعت توسعه فوق‌العاده! ⚡️

-----

🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامه‌نویسی، به کانال ما بپیوندید!

📚💻 @dotnetcode 🖥👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
20👍7🔥1



tgoop.com/dotnetcode/3073
Create:
Last Update:

قسمت شماره ۱: خداحافظی با کدهای تکراری در C# 14!

سلام به همه برنامه‌نویس‌های خفن دات‌نتی! 👋

خبرهای داغ داریم! 🔥 .NET 10 و C# 14 با یه سری ویژگی‌های فوق‌العاده از راه رسیدن که کدنویسی رو خیلی شیرین‌تر می‌کنه. بیاید چندتا از باحال‌ترین‌هاش رو با هم ببینیم:

۱. اپراتور `??=` (انتساب شرطی Null)

یادتونه چقدر if می‌نوشتیم تا چک کنیم یه متغیر null هست یا نه و بعد بهش مقدار بدیم؟ خب، اون دوران تموم شد!

// ----------------
// قبلاً اینجوری بود:
// ----------------
List<string> myStrings = null;
if (myStrings == null)
{
myStrings = new List<string>();
}

// ----------------
// حالا در C# 14:
// ----------------
List<string> myStrings = null;
myStrings ??= new List<string>(); // به همین راحتی!
// اگه null بود، یکی جدید بساز.


۲. کلمه‌ی کلیدی `field` (خداحافظی با Backing Fields!)

یکی از بهترین امکانات جدید! دیگه لازم نیست برای یه Property ساده، یه فیلد private جدا تعریف کنیم. خود C# این کار رو با کلمه field برامون انجام میده:

// ----------------
// قبلاً برای ولیدیشن:
// ----------------
private string _name;
public string Name
{
get => _name;
set
{
if (string.IsNullOrWhiteSpace(value))
throw new ArgumentException("Name cannot be empty");
_name = value;
}
}

// ----------------
// حالا در C# 14:
// ----------------
public string Name
{
get => field; // 'field' همون backing field مخفی ماست
set
{
if (string.IsNullOrWhiteSpace(value))
throw new ArgumentException("Name cannot be empty");
field = value; // مستقیم بهش مقدار می‌دیم 🤯
}
}


۳. اپلیکیشن‌های تک‌فایلی (File-Based Apps)

برای یه تست ساده یا یه اسکریپت کوچیک دیگه نیازی به ساختن پروژه (.csproj) و سلوشن (.sln) نیست! فقط یه فایل .cs بسازید و اجراش کنید:

// یه فایل بساز به اسم Program.cs
Console.WriteLine("سلام دنیا، بدون پروژه!");

// توی ترمینال اجرا کن:
// dotnet run Program.cs

قسمت شماره ۲: .NET 10 برای وب‌کارهای حرفه‌ای!

خب، برگشتیم با قسمت دوم معرفی .NET 10! 💻 این بار می‌خوایم ببینیم تو دنیای وب (ASP.NET)، دیتابیس (EF Core) و بلیزور (Blazor) چه خبره.

۱. ولیدیشن اتوماتیک در Minimal APIs (ASP.NET Core)

قبلاً اعتبارسنجی (Validation) تو Minimal API ها یه کم دردسر داشت. حالا خیلی شیک و اتوماتیک شده. فقط کافیه مدل‌هاتون Data Annotation داشته باشن:
// فقط کافیه این سرویس رو اضافه کنی:
builder.Services.AddValidation();

// و تمام!
app.MapPost("/users", (CreateUserRequest user) =>
{
// اگه 'user' معتبر نباشه (مثلاً ایمیل خالی باشه)
// .NET خودکار خطای 400 Bad Request برمی‌گردونه.
// اصلاً به این خط کد نمی‌رسه!
return Results.Ok(user);
});

// مدل ما:
public class CreateUserRequest
{
[Required]
[EmailAddress]
public string Email { get; set; }

[MinLength(6)]
public string Password { get; set; }
}


۲. آپدیت ستون‌های JSON در EF Core

کار کردن با ستون‌های JSON تو EF Core 10 خیلی قوی‌تر شده. مثلاً حالا می‌تونیم یه تیکه از JSON رو مستقیم آپدیت کنیم، بدون اینکه کل آبجکت رو از دیتابیس بخونیم و برگردونیم!

// فرض کنید یه ستون JSON به اسم 'Profile' داریم
await db.Users
.Where(u => u.Id == 123)
.ExecuteUpdateAsync(s => s
// مستقیم آدرس توی پروفایل رو آپدیت کن
.SetProperty(u => u.Profile["Address"]["City"], "Tehran")
);
// این یعنی پرفورمنس بالاتر! 🔥


۳. هات ریلود (Hot Reload) برای Blazor WebAssembly

اینم خبری که همه‌ی بچه‌های Blazor منتظرش بودن! 🥳 از .NET 10 به بعد، Hot Reload برای Blazor WebAssembly (Wasm) هم به خوبی کار می‌کنه.

یعنی هم کد C# و هم فایل‌های Razor. رو تغییر می‌دید، سیو می‌کنید و *بدون رفرش کردن مرورگر*، تغییرات رو تو صفحه می‌بینید. این یعنی سرعت توسعه فوق‌العاده! ⚡️

-----

🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامه‌نویسی، به کانال ما بپیوندید!

📚💻 @dotnetcode 🖥👨‍💻

BY DotNet | دات نت




Share with your friend now:
tgoop.com/dotnetcode/3073

View MORE
Open in Telegram


Telegram News

Date: |

You can invite up to 200 people from your contacts to join your channel as the next step. Select the users you want to add and click “Invite.” You can skip this step altogether. 5Telegram Channel avatar size/dimensions Add the logo from your device. Adjust the visible area of your image. Congratulations! Now your Telegram channel has a face Click “Save”.! How to create a business channel on Telegram? (Tutorial) “[The defendant] could not shift his criminal liability,” Hui said.
from sg


Telegram DotNet | دات نت
FROM Singapore