سعید صفایی | SAEED SAFAEE

ویژگی های جدید در C# ۱۱

سعید صفایی دیدگاه
ویژگی های جدید در 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”
   " " ";



دیدگاه خود را بگذارید