آموزش مقادیر لیترال در سی شارپ

Ratings
(0)

 

در بخش دوم از مقاله ی ساختار یک برنامه کنسول ساده در سی شارپ، دو مثال از مقادیر لیترال را مشاهده کردید: یکی عدد صحیحِ (17) و یکی رشته ی ("\"myInteger\" is") بود. همان طور که در جدول 3.4 نشان داده شده است، دیگر نوع های متغیر نیز مقادیر لیترال مربوط به خود را دارند.

بسیاری از اینها، دارای پسوند(suffix) هستند، که ما بوسیله آن، یک دنباله از کاراکترها را در انتهای مقدار لیترال اضافه می کنیم تا نوع دلخواه را مشخص کنیم. برخی از لیترال ها چند نوع(type) دارند، که بسته به محتوای آنها، توسط کامپایلر در زمان کامپایل مشخص می شوند(همان طور که در جدول 3.4 نشان داده شده است).

(جدول 3.4 : مقادیر لیترال)

(جدول 3.4 : مقادیر لیترال)

 (ادامه جدول 3.4)

 (جدول 3.4 : مقادیر لیترال)

 


لیترال های باینری و جداکننده های اعشار

باید گفت که کامپیوترها تنها دو چیز را می فهمند: یعنی فقط 0 و 1 را متوجه می شوند که به باینری یا دودویی معروف است(مبنای 2). اگر بخواهیم، می توانیم تمام برنامه های خودرا به صورت دنباله ای از 0 ها و 1 ها کدنویسی کنیم و سپس آن برنامه را اجرا کنیم. هرچند این کار نه (به سادگی) امکان پذیر است و نه توصیه می شود. بنابراین بهتر است از یک زبان برنامه نویسی مانند سی شارپ استفاده کنیم.

برای اینکه به طور عمیق بفهمیم که کی و کجا و چگونه و چرا استفاده از این لیترال ها استفاده کنیم، ضروری است که درک فنی و تاریخیِ عمیقی از نیبل ها(nibbles)، بیت ها، بایت ها، کاراکترها، کلمات و bin و hex و octal و غیره داشته باشیم. به جای اینکه به سوالات تاریخیِ چرا و چگونه بپردازیم، فعلاً کافی است بدانید که بعنوان مثال، ما می توانیم از مقادیر لیترال های باینری بعنوان یک راه زیبا برای ذخیره ی مقادیر، مثل ثابت ها برای تطابق الگوها و مقایسه و همچنین برای اجرای بیت ماسک ها (bitmask)استفاده کنیم.

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

int[] binaryPhases = [ 0b00110001, 0b01100010, 0b11000100, 0b10001001 ];
int[] hexPhases = [ 0x31, 0x62, 0xC4, 0x89 ];

مقادیر هگزادسیمال(hex) هیچ الگویی ندارند، این باعث می شود که به سختی بتوانیم به سرعت، مشخص کنیم که هدف این کد چه هست. اکنون ما یک پیش زمینه داریم و به جای اینکه به سرعت، زیاد در تطابق الگوها و بیت ماسک ها(bit masks) عمیق شویم، در ادامه ی این بخش، به طور مشخص به لیترال های باینری در سی شارپ 7 و جداکننده های دیجیتال می پردازیم.

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


برای اینکه ویژگی لیترال های باینری سی شارپ 7 را بهتر درک کنید، به کد زیر توجه کنید:

int[] numbers = [ 1, 2, 4, 8, 16 ];

در سی شارپ 7، مقادیر اضافه شده به آرایه ی numbers می توانند مستقیماً به صورت باینری نوشته شوند، مانند زیر:

int[] numbers = [ 0b0001, 0b0010, 0b00100, 0b0001000, 0b00010000 ];

مانند مقادیر هگزادسیمال که با پیشوند 0x شروع می شوند، کامپایلر هر مقداری که با 0b شروع شود را نیز بعنوان یک مقدار باینری در نظر می گیرد و آن را به این صورت پردازش می کند. همان طور که می دانید، مقادیر باینری طولانی تر هستند و وقتی که می خواهیم آنها را به صورت دستی تایپ کنیم، ممکن است به راحتی اشتباه کنیم. بعنوان مثال، به عدد 128 توجه کنید؛ مقدار باینری این عدد، 10000000 است؛ که در آن هفت صفر وجود دارد. در اینجا، جداکننده های ارقام که در سی شارپ 7 جدید هستند، به ما کمک می کنند. به مثال زیر توجه کنید:

int[] numbers = [ 32, 64, 128 ];
int[] numbers = [ 0b0010_0000, 0b0100_0000, 0b1000_0000 ];

ما می توانیم لیترال های باینری را به صورت چند رقمی گروه بندی کنیم؛ که به خوانایی و مدیریت کدها کمک می کند. جداکننده های ارقام تنها مخصوص مقادیر باینری نیستند؛ ما می توانیم از آنها در اعداد اعشاری(decimal)، ممیز شناور(float) و double استفاده کنیم. در نمونه ی زیر، مقدار عدد پی(Pi) با استفاده از یک جدا کننده ی رقم، پس از هر سه رقم، استفاده شده است. دلیل اصلی برای استفاده از جدا کننده های رقم، خواناتر کردن کدها است:

public const double Pi = 3.141_592_653_589_793_238_462_643_383_279_502;

استفاده از لیترال های رشته ای(String)

قبلاً در این فصل، با چند کاراکتر گریز که می توانستیم از آنها در لیترال های رشته ای استفاده کنیم، آشنا شدیم. جدول 3.5 لیست این کاراکترها را نشان می دهد:

(جدول 3.5، کاراکترهای گریز برای لیترال های رشته ای)

(جدول 3.5، کاراکترهای گریز برای لیترال های رشته ای)

در ستون Unicode Value در جدول بالا، مقادیر هگزادسیمال برای کاراکترها نشان داده شده است؛ که طبق مجموعه کاراکترهای یونیکد می باشد. علاوه بر آن، ما می توانیم هر کاراکتر یونیکد را با استفاده از یک دنباله یا همان کاراکتر گریز مشخص کنیم. برای این کار، از یک کاراکتر استاندارد بک اسلش(\) که به دنبال آن از یک حرف u و سپس مقدار هگزادسیمال چهار رقمی استفاده می شود(بعنوان مثال چهار رقم پس از حرف x در جدول 3.5).

این یعنی دو رشته ی زیر معادل یکدیگر هستند:

"Benjamin\'s string."
"Benjamin\u0027s string."

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

برای انجام این کار، کاراکتر @ را قبل از رشته ی مورد نظر قرار دهید:

@"Verbatim string literal."

این رشته را می‌توان به راحتی به روش معمولی مشخص کرد؛ اما رشته ی زیر نیاز به کاراکتر @ دارد:

@"A short list:
item 1
item 2"

رشته های کلمه به کلمه، به ویژه در نام فایل ها استفاده می شود، زیرا آنها از تعداد زیادی کاراکتر بک اسلش استفاده می کنند. برای انجام این کار با استفاده از رشته های نرمال، می بایست در تمام رشته از چند جفت بک اسلش استفاده کنیم:

"C:\\Temp\\MyDir\\MyFile.doc"

اما با استفاده از لیترال های رشته ی کلمه به کلمه، ما می توانیم این آدرس را خواناتر کنیم. رشته ی کلمه به کلمه زیر معادل عبارت بالا می باشد:

@"C:\Temp\MyDir\MyFile.doc"

 


نکته: همان طور که بعداً در این کتاب نشان داده خواهد شد، رشته ها از نوعِ مرجع(reference type) هستند. این با دیگر نوع هایی که قبلاً در این فصل دیدیم، که از نوعِ مقدار(value type) بودند، تضاد دارد. یک نتیجه (از این موضوع) این است که رشته ها همچنین می توانند برابر با مقدار null قرار گیرند؛ که به این معنی است که متغیر رشته، به یک رشته ارجاع نمی دهد(یا اینکه به چیز دیگری برای این موضوع ارجاع نمی دهد). (این نکته بیشتر بررسی شود ص 46).


 

 

 

کتاب آموزش سی شارپ, آموزش برنامه نویسی, آموزش سی شارپ

  • بازدید: 371

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال