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

در سال 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);

 

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

 

 

3.7/5 - (3 امتیاز)
فرهاد محسنی

مشاهده نظرات

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

آخرین مطالب

نحوه هلتداری مدرن و کارآمد

مکانیسم هتلداری پیشرفته در دنیای امروزی که تکنولوژی تمام ابعاد زندگی و کار را در… ادامه مطلب

ژوئن 6, 2020

سیستم نرم افزار هتلداری

امروزه هتل‌ها در دنیای صنعت گردشگری یکی از ارکان اساسی محسوب می‌شوند. ارائه‌ی خدمات با… ادامه مطلب

می 22, 2020

نحوه انبارداری شرکت آمازون

موفقیت کسب و کارهای بزرگ، همیشه الگوی مناسبی برای کسب و کارهای کوچک‌تر است. آمازون… ادامه مطلب

آوریل 26, 2020

طراحی نرم افزار انبارداری

  یکی از مهم‌ترین و کلیدی‌ترین بخش‌های یک سازمان، انبار محصولات یا خدمات آن است.… ادامه مطلب

آوریل 21, 2020

طراحی نرم افزار مالی و حسابداری

این روز ها با تقریب خوبی می توان گفت شرکت یا بیزینسی باقی نمانده است… ادامه مطلب

ژانویه 30, 2020

چگونه برنامه نویس موفق اندروید شویم؟

از آنجا که اپلیکیشن های موبایل بیشتر و بیشتر مردم را از راه های خلاقانه… ادامه مطلب

ژوئن 15, 2019