تغییرات جالب در زبان C# که ممکن است ندانید!

لرن سایت,آموزش برنامه نویسی سی شارپ,آموزش طراحی سایت,آموزش برنامه نویسی اندروید,آموزش SQL c# android php jquery,قالب سایت

شما اینجا هستید : صفحه اصلی

با عضویت در کانال تلگرامی لرن سایت ، اولین فردی باشید که از تخفیفات و مطالب جدید خبردار می شوید !

تغییرات جالب در زبان C# که ممکن است ندانید!

تغییرات جالبی در زبان C# که ممکن است ندانید!

 

از زمانی که مایکروسافت زبان سی شارپ را به عنوان سوگلی خود معرفی کرد دولوپر های زیادی جذب آن شدند ، زیرا این زبان یک زبان ساده ، مدرن ، کار آمد و شئ گرا میباشد.

در سال 2007 همکاران مایکروسافت نسخه ایی اوپن سورس از .Net Framework را با نام Mono  ارائه دادند که تحت لینوکس کار میکرد.

اما این برای مایکروسافت کافی نبود و از سال 2014 ماکروسافت اعلام کرد که  از الان کل دات نت فریمورک ( شامل کامپایلر ، CLI ، CLR  و…) به صورت اوپن سورس ، و از طریق گیت هاب قابل دسترسی هستند!

این امر باعث گسترش انجمن دات نت شد و زبان سی شارپ را تبدیل به زبانی غنی تر و پرجنب و جوش تر کرد. حال تغییرات جذاب این زبان را باهم مرور میکنیم که ممکن است ندانید !

عملگر ناوبری امن (عملگر ؟)

عملگر “؟” از دات نت 2 همراه با نوع داده های nullable  (قابل نال شدن) اضافه شد که تایین میکرد یک داده نال هست یا خیر( میتوانیم این مورد را با پراپرتیِ HasValue  نیز تست کنیم).

در سی شارپ 6 ماکروسافت قابلیت “؟” (ناوبری امن ) را اضافه کرد. این عملگر بسیار ساده و کارآمد میباشد. بایید با یک مثال آن را متوجه شویم ، فرض کنید که میخواهیم به یک متد یا پراپرتی از یک کلاس دسترسی پیدا کنیم . ما میتوانیم از عملگر ناوبری (“.”) استفاده کنیم . (class.Methode();) اما اگر متد یا پراپرتی ما نال باشد ما با اکسپشن معروف NullRefrenceException  مواجه میشویم. پس نتیجه میگیریم ما باید هر متد یا پراپرتی را قبل از دسترسی بررسی کنیم که مقدار آن نال نباشد.

    // porsche yek object as classe car  mibashad 
    if(porsche!=null && porsche.Name !=null)  
      console.Write(porsche.Name); // ma mitavanim as propertye name estefadeh konim  
      
    // agar bekhahim az methode Accelerate estefadeh konim:
    if(porsche!=null)  
      porsche.Accelerate(10);  

با عملگر ناوبری امن ما فقط اینکار را انجام میدهیم :

    string nom = porsche?.Name ;   
      
    // and to call Accelerate()  
    porsche?.Accelerate();

راهی برای ساختن String (رشته)

در سی شارپ راه های زیادی برای ساختن رشته وجود دارد که بهترینِ آن سریع ترینِ آن است ، StringBuilder!

 

    // sakhte yek StringBuilder ba zarfiate 50 character.    
    // Initialize kardane StringBuilder ba maghadire "ABC".
    StringBuilder sb = new StringBuilder("ABC", 50);  
      
    // Afzoodane 3 character  (D, E, va F) be the enthehaye StringBuilder.
    sb.Append("DEF");  
      
    // namayeshe reshte
    Console.WriteLine(sb.ToString());  

درصورتی که ما چند پارامتر داشته باشیم که بخواهیم با استرینگ ادغام شوند، میتوانیم از string.Format  استفاده کنیم:

decimal temp = 20.4m; 

string s = String.Format("The temperature is {0}°C.", temp); 

Console.WriteLine(s); 

//'The temperature is 20.4°C.

اما حالا سینتکس جدید در سی شارپ 6.0 را ببینید:

    string name = Joe ; 

    string hours = "11:00"; 

    Console.WriteLine($"Name = {name}, hours = {hours}");

یک روش ظریف برای ساختار بندی یک شئ (Tuple)

 

(این فقط یک مثال از استفاده Tuple میباشد)

اکثر زبان های برنامه نویسی از متد ها و توابع با فرمتی  استاندارد ( ساختار ، پارامتر ها و در نهایت برگرداندن یک شئ) پشتیبانی میکنند. اگر ما بخواهیم بیش از یک شئ یا پارامتر را بر گردانیم مجبور به استفاده از لیست ها یا آرایه ها هستیم! اما در سی شارپ 6.0 ماکروسافت راه دیگری را به نام Tuple پیش روی ما گذاشته ،

تعریفی که MSDN  از Tuple  دارد این است :

“یک ساختار داده ای که یک عدد خاص و دنباله ای از عناصر دارد.”برای مثال در یک فروشگاه ما از یک Tuple  استفاده کرده ایم که از سه المان تشکیل شده است ،المان شماره 1 برای نام شخص ، المان شماره 2 برای سال تولد و المان شماره 3 برای درآمد شخص.

 

روش های زیادی برای ساخت Tuple  موجود هستند از جمله:

  • استفاده از کانستراکتور پیشفرض – new
Tuple<string, string,string> person = new Tuple<string, string,string>("Jhon","Doe","5555"); 

Console.WriteLine("Full Name: {0} {1}  ", person.Item1, person.Item2); 

Console.WriteLine("PIN: {0} ", person.Item3);

 

  • استفاده از متد استاتیک – Create
    // Sakhte yek Tuple,e 5 Ganeh 

    var population = Tuple.Create("Tunisia", 6999, 54462, 9888, 5258456); 

    // namayeshse element haye aval va akhar

    Console.WriteLine("Population of {0} in 2013: {1:N0}", population.Item1, population.Item5); 

    // Natijeh: 

    //       Population of Tunisia in 2013: 5,258,456

 

 

در سی شارپ 7.0 راه جدیدی برای تعریف Tuple  و خلاص شدن از شر item1 , item 2 , item3  به وجود آمده که با نگاه کردن به کد زیر متوجه آن میشوید:

    public(string name, string location, string population) GetCountry()  

    { 

        // yaftane yek fard dar list va bargardandane an: 

        return ("Tunisia", "North Africa", "5258456"); 

    } 

    var country = GetCountry(); 

    Console.WriteLine("Population of {0} - {1} in 2013: {2:N0}", country.name, country.location, country.population); 

    // Natijeh: 

    //       Population of Tunisia - North Africa in 2013: 5,258,456

 

 

Params

ممکن است بخواهیم در یک متد بیشتر از یک شئ را از کاربر بگیریم ، در اینگونه مواقع میتوان از کلمه کلیدی params  استفاده کرد (این کلمه کلیدی زمانی کاربردی تر میشود که تعداد مقادیری که از کاربر گرفته میشود مشخص نیست):

    public void PrintValues(params string[] values) 

    { 

        foreach(var value in values) 

        Console.WriteLine(value); 

    } 

    PintValues("Hello", "this", "is", "a", "test"); 

    // Console print  

    // Hello 

    // this 

    // is 

    // a 

    // test

 

 

وابستگی static

در سی شارپ 6.0 به بعد میتوانید وابستگی های خود را به صورت  static اضافه کنید ، این یعنی نیازی به صدا زدن کلاسِ مربوطه نداریم:

 

  using static System.Math; 

    ... 

    double x = 3; 

    double y = 4; 

    double distance = Sqrt(x * x + y * y);

 

امیدواریم این مطلب مورد توجه شما قرار گرفته باشد ، خوشحال میشویم اگر شما هم تغییرات مد نظر خود را در بخش نظرات با ما درمیان بگذارید!

 

 

5/5 - (2 امتیاز)
اگه مطلب خوشتون اومد پس لطفا به اشتراک بذارین تا بقیه هم خوششون بیاد :)

نظرات

مشترک شدن
اطلاع رسانی از :
guest
1 دیدگاه
Inline Feedbacks
View all comments
محمد
محمد
4 سال گذشته

دردو بر شما جای خوشحالیه که فناوریهای ماکروسافت خصوصا سی شارپ رشد بهتری دارن
و اینکه متدهای جدید رو در اولین سایت ایرانی دیدم الان حتی استید باتجربه هم هنوز خوشونو با شرایط جدید وفق ندادن