ویژگی های جدید C# 7.0

پنجشنبه 24 فروردین 1396

دراین مقاله ما با ویژگی های جدید c# 7.0 در مقایسه با نسخه های قبلی آشنا می شویم.ویژگی هایی که در عین ساده تر کردن برنامه نویسی بسیار جالب و کارا هستند.

ویژگی های جدید C# 7.0

ویژگی های جدید C# 7.0

در صورت نیاز میتوانید آموزش رایگان و تصویری سی شارپ 7  را مشاهده کنید .

وقتی نسخه های قدیمی تر C# رو با  C# 7.0 مقایسه می کنیم ، در می یابیم که این نسخه  ویژگی های جدیدی نسبت به نسخه های قبلی دارد که در اینجا بعضی از آنها را شرح می دهیم.

تعریف متغیر های خروجی داخل TryParse

تعریف یک FUNCTION داخل یک FUNCTION دیگر (LOCAL FUNCTION)

خوانایی بیشتر در تعریف complex numbers and Binary literals.

برگشت دادن یک رفرنس از متغیر از یک FUNCTION  و تغییر یک متغیر رفرنس داده شده

TUPLE ساده شده

توضیحات 1

تعریف متغیر خروجی داخل Try Parse. در نسخه های پیشین C# ، برای تعریف متغیر خروجی به روش زیر عمل می کردیم

ولی در C# 7.0 روش تعریف تغییر پیدا کرده و ما می توانیم تعریف را داخل خود Try Parse انجام دهیم.بدین صورت کد نویسی ما کاهش پیدا می کند.



    static void Main(string[] args)  
       {  
           bool output = int.TryParse("123", out int i);  
           Console.WriteLine(output);  
           bool output = int.TryParse("two", out int i);  
           Console.WriteLine(output);  
           Console.Read();  
       }   

ساختن یک FUNCTION داخل یک FUNCTION دیگر (LOCAL FUNCTION)

در نسخه های قدیمی تر C# ما می توانستیم با استفاده از  lambda  یا با استفاده از DELEGATE و یا استفاده از anonymous method یک FUNCTION  داخل یک FUNCTION دیگر داشته باشیم خواندن و درک انها بسیار پیچیده بود. C# 7.0 یک ویژگی عالی دارد که بوسیله آن ما می توانیم یک FUNCTION رو داخل یک FUNCTION تعریف کنیم بصورتی که درک آن بسیار خوانا و راحت باشد. کد زیر مثالی از تعریف یک FUNCTION  داخل یک FUNCTION  دیگر در C# 7.0



    static void Main(string[] args)  
       {  
           int subtract;  
           int Add(int a, int b)  
           {  
               int difference(int c, int d)  
               {  
                   return c - d;  
               }  
               subtract = difference(a, b);  
               return a + b;  
           }  
           int result = Add(25, 15);  
           Console.WriteLine("sum = "+ result);  
           Console.WriteLine("difference = " + subtract);  
           Console.ReadLine();  
        }  

همانطور که شما در مثال بالا می بینید، ما در FUNCTION اصلی برنامه ، FUNCTION  ساخته ایم به نام ADD()، و در داخل ADD() FUNCTION ما difference() function را ساخته ایم ،این یک ویژگی عالیه ، اینطور نیست؟!!

خوانایی بیشتر در تعریف complex numbers and Binary literals

در C# 7.0  ما توانایی جداسازی اعداد و لیترال ها با استفاده از (_) را داریم. مثالی در زیر مشاهده می کنید



    static void Main(string[] args)  
       {  
           decimal hugenumber = 048_____78_____8960_500_653_80;  
           Console.WriteLine("Big Number\n..........................");  
           Console.WriteLine(hugenumber);  
      
           int[] numbers = { 0b0000, 0b1_001_000_000 };  
           Console.WriteLine("Binary literals from array are \n..........................");  
           foreach (var item in numbers)  
           {  
               Console.WriteLine(item);  
           }  
           Console.Read();  
        }  

همانطور که در مثال با مشاهده می کنید عدد 4878896050065380   به سختی قابل خواندن است.اما در کد ما می توانیم با استفاده از "_" این عدد رو خوانا تر کنیم. ما می توانیم به هر تعدادی از "_" استفاده کنیم و کامپایلر در زمان اجرای برنامه آن را نادیده می گیرد و عدد را بصورت نرمال نمایش می دهد.

برگشت دادن یک رفرنس از متغیر از یک FUNCTION  و تغییر یک متغیر رفرنس داده شده

با استفاده از C# 7.0 ما می توانیم یک رفرنس از آیتم بر اساس ایندکس آن را دریافت کنیم و سپس آن را تغییر دهیم.کد زیر مثالی از این موضوع را نشان می دهد.

static void Main(string[] args)  
  {  
      int[] _numbers = { 10, 20, 30, 40, 50 };  
      ref int refNumber = ref GetRefernce(_numbers,3)  
      Console.WriteLine("Before changing third Value");  
      Console.WriteLine(_numbers);  
      refNumber = 25;  
      Console.WriteLine("After changing third Value");  
      Console.WriteLine(_numbers[3]);  
      Console.Read();  
   }  
  public static ref int GetRefernce(int[] _array, int index)  
  {  
      return ref _array[index];  
  }  

TUPLE ساده شده

در C# 7.0 ، TUPLE بسیار ساده شده است. در نسخه های قبلی ما برای استفاده از TUPLE  باید از کلمه کلیدی TUPLE با تعریف آن استفاده می کردیم و در زمان بازیابی ما نمی دانستیم کدام یک از انها بازیابی شده است به دلیل اینکه نمی توانستیم نام متغیر را داخل TUPLE بگیریم.اما رد C# 7.0 این موضوع امکان پذیر است و برای تعریف TUPLE نیازی به استفاده از کلمه کلیدی TUPLE نداریم و ما می توانیم نام متغیر ها رو بدست بیاوریم.

در زیر مثالی از این موضوع رو مشاهده میکنیم



    static void Main(string[] args)  
      {  
          Tuple<int, string> ob = new Tuple<int, string>(100, "Ravi");  
          Console.WriteLine("Employee Name: "+ob.Item2);  
      
          (int, string) ob1 = (20, "Ravi");  
          Console.WriteLine("Employee Name: " + ob1.Item2);  
      
          (int id, string name) ob2 = (20, "Ravi");  
          Console.WriteLine("Employee Name: " + ob2.name);  
      
          var ob3 = (Empid:20, EmployeeName: "Ravi");  
          Console.WriteLine("Employee Name: " + ob3.EmployeeName);  
          Console.Read();  
     }

آموزش سی شارپ

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 3k بازدید
  • 9 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید