سوالات رایج سی شارپ
در این مقاله قصد داریم دو مورد از سوالاتی که بیشتر در مورد سی شارپ جستجو میشود را پاسخ دهیم. زبان سی شارپ بسیار گسترده بوده و همواره ماکروسافت امکانات جدیدی را به آن اضافه میکند. بخصوص در ورژن های اخیر این زبان ساختار های داده ای جدیدی به آن اضافه شده است. در این پست قصد داریم دو مورد از سوال هایی که زیاد در رابطه با امکانات جدید این زبان پرسیده میشود را پاسخ دهیم. با zeroToHero همراه باشید…
۱.باید از چه روشی برای تعریف متغیر رشته ای خالی استفاده کرد؟ Empty یا string.Empty ؟
میدانیم برای اینکه متغیر رشته ای خالی تعریف کنیم به این سه روش میتوان عمل کرد :
String.Empty(); String.Empty(); String _strOne = "";
اما استفاده از کدام یک درست تر بوده و عملکرد بهتری به برنامه میدهد؟ در واقع میتوان گفت که هیچ یک از این سه روش فرقی با یکدیگر ندارند. برای فهمیدن این موضوع یک برنامه ساده مینویسیم که تفاوت این ها را نشان دهد:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace teststring { class Program { static void Main(string[] args) { string str1 = ""; string str2 = string.Empty; string str3 = String.Empty; Console.WriteLine(object.ReferenceEquals(str1, str2)); //prints True Console.WriteLine(object.ReferenceEquals(str2, str3)); //prints True Console.ReadKey(); } } } Output: True Output: True
در واقع با این مثال میتوان فهمید که هر سه روش متغیری با طول صفر در حافظه ایجاد میکنند. اینکه از کدام یک از این سه روش استفاده کنید کاملا به خودتان و هم تیمی هایتان بستگی دارد تا بتوانید سبک کدهای خود را مشابه هم قرار داده و کدهایتان برای دیگر اعضای تیم قابل فهم باشد. (این کد در فریم ورک ۴.۵ تست شده است).
۲.عملگر کوالسر (؟؟) در سی شارپ چیست ؟
شاید در بعضی از برنامه ها در لابه لای کد ها چنین چیزی مشاهده کرده باشید :
FormsAuth = formsAuth ?? new FormsAuthenticationWrapper();
که اگر بخواهیم آن را بازتر کنیم میتوانیم بنویسیم :
FormsAuth = formsAuth != null ? formsAuth : new FormsAuthenticationWrapper();
که باز هم میتوان آن را بازتر کرد و به شکلی کلی تر نوشت :
if(formsAuth != null) FormsAuth = formsAuth; else FormsAuth = new FormsAuthenticationWrapper();
با توجه به کد بالا معنی این عملگر به راحتی قابل فهم میباشد. این عملگر به صورت زیر نیز قابل تعمیم است:
string Answer = Answer1 ?? Answer2 ?? Answer3 ?? Answer4;
یعنی اگر هرکدام از Answer# ها null نبود مقدار آن را به Answer تخصیص بدهد. در انتها نمونه کدی که در سایت خود ماکروسافت در مورد این عملگر آمده را برای اطلاعات بیشتر در این مورد و نحوه های مختلف استفاده از این عملگر را قرار میدهم:
class NullCoalesce { static int? GetNullableInt() { return null; } static string GetStringValue() { return null; } static void Main() { int? x = null; // Set y to the value of x if x is NOT null; otherwise, // if x = null, set y to -1. int y = x ?? -1; // Assign i to return value of the method if the method's result // is NOT null; otherwise, if the result is null, set i to the // default value of int. int i = GetNullableInt() ?? default(int); string s = GetStringValue(); // Display the value of s if s is NOT null; otherwise, // display the string "Unspecified". Console.WriteLine(s ?? "Unspecified"); } }
در مقاله های بعدی سوالات بیشتری در مورد سی شارپ پاسخ خواهیم داد. با zeroToHero همراه باشید…
مطالب زیر را حتما مطالعه کنید
روشن و خاموش کردن PC در کد سیشارپ
۷Zip با سی شارپ
متدها در سی شارپ
تبدیل متغیر ها در سی شارپ
مدیریت استثناء در سی شارپ
برنامه نویسی چند نخی در سی شارپ
2 Comments
Join the discussion and tell us your opinion.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
از یو ایکس شیراز با سایتتون آشنا شدم اتفاقی
مطالب جالبی میذارید
موفق باشید
ممنون ! نظر لطفتونه. برنامه ها و اهداف جالبی برای سایت داریم!
همچنان همراه ما باشید !