tgoop.com/dotnetcode/3073
Create:
Last Update:
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. رو تغییر میدید، سیو میکنید و *بدون رفرش کردن مرورگر*، تغییرات رو تو صفحه میبینید. این یعنی سرعت توسعه فوقالعاده! ⚡️
-----
📚💻 @dotnetcode

