سعید صفایی | SAEED SAFAEE
ویژگی های جدید در C# ۱۱
در سی شارپ ۱۱، میتوانیم با استفاده از کلمه کلیدی، پراپرتی هایی را به عنوان مورد نیاز در زمان نمونه سازی اجباری کنیم:
درنسخه های پایین تر سی شارپ، راه خوبی وجود نداشت که بتوانیم به کامپایلر بگوییم که یک ویژگی خاص از یک کلاس اجباری است، اما:
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
public required DateTime DateOfBirth { get; set; }
public required string Email { get; set; }
}
اگر میخواهیم مطمئن باشیم که ویژگیهای مورد نظر همیشه مقدار دهی شدهاند، باید این کار را به شکل زیر انجام میدهیم:
var myUser = new User()
{
DateOfBirth = new DateTime(۲۰۲۲, ۰۸, ۰۶),
Email = "Email@test.com"
}
UTF-۸ نمایش کارکترهای
//C# ۱۰
byte[] array = Encoding.UTF۸.GetBytes("Hello World");//C# ۱۱
byte[] array = "Hello World";
الگوهای لیست
var digits= new[] { ۱, ۲, ۳, ۴ };
//constant patterns
Console.WriteLine(digits is [۱, ۲, ۳, ۴]); // True
Console.WriteLine(digits is [۱, ۲, ۴]); // False//discard patterns
Console.WriteLine(digits is [_, ۲, _, ۴]); // True
if (items is [.., ۴۲])
{
Console.WriteLine("اخر لیست ۴۲ باشد");
}
if (name != null && name.Length > 5) // no no
{
// Do something
}
if (name is string { Length: > 5 }) // ok
{
// Do something
}
عبارت سوئیچ در درون رشته
int month = ۷;
string season = $"The season is { month switch
{
۱ or ۲ or ۱۲ => "winter",
> ۲ and < ۶ => "spring",
> ۵ and < ۹ => "summer",
> ۸ and < ۱۲ => "autumn",
_ => "out of range number",
}}.";Console.WriteLine(season);
output: The season is summer.
فرمت جدید برای لیترالهای رشته ای(Raw string literals)
میتوانند متن دلخواه، از جمله فضای خالی، خطوط جدید، کوتیشنهای جاسازی کرد. سه کاراکتر دابل کوتیشن
string message =
" " "
other long message
printed by that machine,
would possibly be one of : “hahamotheriloveyou”
" " ";