در این پست دامنه انواع متغیر را بیان می کنیم . دانستن این دامنه ها به ما کمک می کند تا در هنگام استفاده از آنها برای منظور خود ، نوع درستی از متغیر را بکار گیریم تا هم برنامه ما هنگام اجرا دچار خطا های پیدا و پنهان نگردد و هم اینکه از هدر رفت منابع جلوگیری شود .مثلا اگر در برنامه ما داشتن یک متغیر از نوع byte کافی باشد ، اشتباها از نوع دیگری مانند int استفاده نمی کنیم . در چنین مواردی است که گرچه برنامه هیچ گونه خطایی ندارد ولی هدر رفت منابع را بدنبال دارد.در برخی از موارد نیز کاربرد نابجای متغیرها باعث خطاهای پنهان در برنامه شده و مثلا اعداد محاسبه شده آنگونه که شما انتظار دارید نیستندو در برخی از موارد نیز آشکاراپیام خطایی دریافت می کنید که ناشی از کاربرد نابجای متغیر تبدیل اشتباه آنها به همدیگر می باشد.
1 . byte :
بین ( 255 ) تا ( 0 )
2 . sbyte :
بین ( 127+ ) تا ( 128- )
3 . short :
بین ( 32767+ ) تا ( 32768- )
4 . ushort :
بین ( 65535 ) تا ( 0 )
5 . float :
عددی است 6 الی 9 رقمی ( شناور ) در بین بازه عددی زیر:
6 . double :
عددی 15 الی 17 رقمی ( شناور ) در بین بازه عددی زیر :
7 . decimal :
عددی است 28 الی 29 رقمی ( شناور ) در بین بازه عددی زیر :
8 . int :
بین ( 2147483647+ ) تا ( 2147483648- )
9 . uint :
بین ( 4294967295+ ) تا ( 0 )
10 . long :
بین ( 9223372036854775807+ ) تا ( 9223372036854775808- )
11 . ulong :
بین ( 18,446,744,073,709,551,615 ) تا ( 0 )
12 . Boolean :
شامل دو حالت true=1 و false=0 می باشد .
13 . char : شانزده بیت کاراکتر یونیکد
U +0000 تا U +ffff
-------------------------------------------------------------
از دستور :
Console.WriteLine("Size of int: {0}", sizeof(int));
به منظور دسترسی به سایز هر کدام از می توان استفاده کرد .
Variables
متغییرها چیزی نیستند جز یک " نام " که ما به یک فضای مخصوص ذخیره سازی اطلاعات داده ایم .
ذکر این نکته بسیارحائز اهمیت است که بدانیم صرفا ساخت یک متغیر با تعیین یک نام به منظور ذخیره سازی اطلاعات تنها کافی نمی باشد . زیرا سی شارپ برای ذخیره سازی اطلاعات انواع مختلفی از متغیرها را پیش بینی کرده که ما در اینجا به ذکر آنها می پردازیم.
1 . نوع انتگرال : شامل
int - uint - short - ushort - byte - sbyte - long - ulong - char
2 . نوع نقطه شناور : شامل float - double
3 . نوع دهدهی : شامل decimal
4 . نوع بولین : شامل Boolean
5 . enum : هر نوع متغیر از نوع انتگرالی را می پذیرد بجز char
6 . reference : شامل object - string - dynamic
7 . Nullable : شامل متغیرهایی است که می توانند Null یا خالی از محتوا باشند .
همانطور که مشاهده می کنید انواع حافظه دسته بندی شده تا بر حسب نیاز ، از هر کدام استفاده کنیم. برای معرفی هر کدام از این متغیرها باید بروش زیر طبق دستورالعمل سی شارپ عمل کنیم.بعنوان مثال در اینجا یک متغیر از نوع عدد صحیح (int) به نام X معرفی شده است.
int X ;
در خط بالا فقط یک متغیر از نوع عدد صحیح با نام X معرفی گردیده که البته هیچ مقداری هم به آن اختصاص داده نشده است.
برای اختصاص یک مقدار درست در هنگام معرفی این متغیر شبیه خط پائین عمل می کنیم .( مقدار عددی 5 به X اختصاص یافته )
int X = 5 ;
تذکر : int شامل بازه عددی بین منفی 2,147,483,648 تا مثبت 2,147,483,647 می باشد. و بقیه اعداد را شامل نمی شود.
namespace : یا فضای نام
راهی است برای جدا سازی و جلوگیری از تداخل مجموعه ای از اسامی کلاس ها ، متغییرها و ... که در یک برنامه وجود دارند .
اگر فرضا namespace وجود نداشته باشد ، ما در برنامه خود قادر به استفاده از اسامی مشابه نخواهیم بود البته این یکی از خواص فضای نام می باشد . مضافا اینکه با وجود namespace دیگر سیستم هنگام جستجو برای پیدا کردن مثلا یک متغییر مجبور به جستجو در کل برنامه نبوده و فقط فضای جاری را جستجو می کند و این بر افزایش سرعت برنامه بسیار موثر می باشد.
برای تعریف یک فضای نام از روش زیر استفاده می کنیم.
namespace namespace_name
{
// code declarations
}
برای فراخوانی هر کدام از اجزاء داخل یک فضا از روش زیر استفاده می شود
namespace_name.item_name;
شاید الآن خارج از تصور شما باشد که در سی شارپ هر چیزی می تواند یک آبجکت باشد و می تواند فضای نام داشته باشد
بعنوان مثال وقتی ما با دستور کنسول زیر از برنامه می خواهیم تا برای ما متنی را بنویسد در واقع از فضای نام سیستم استفاده برده ایم
Console.WriteLine ("Hello there");
در خط بالا ما نام سیستم را ننوشته ایم و آن هم بدلیل آن آست که نام سیستم در قسمت یوزینگ ها یک بار ذکر شده اگر شما یوزینگ سیستم را پاک کنید بایستی برای استفاده از هر کدام از زیر مجموعه های آن بشکل زیر عمل کنید
System.Console.WriteLine("Hello there");
در این پست لیست کاملی از کیوردهای رزرو شده در سی شارپ رو ملاحظه می کنید .
منظور از رزرو شده این است که شما در هنگام برنامه نویسی به زیان سی شارپ نمی توانید از این کلمات بعنوان " شناسه " استفاده کنید زیرا این کلمات قبلا به کمپایلر برنامه برای منظور خاصی معرفی شده اند و کمپایلر آنها را فقط با همان نقش می شناسد.
در اینجا ما قصد نداریم به همین ترتیبی که این اسامی ذکر شده اند و با توضیح تک تک آنها به شما برنامه نویسی یاد دهیم زیرا به این ترتیب شما نه تنها چیزی از برنامه نویسی یاد نمی گیرید بلکه با اینکار سردرگم هم می شوید. زیرا این کلمات هر کدام مربوط به بخشی از برنامه نویسی است که از نظر مفهوم و کاربرد ارتباطی با همدیگر ندارند و آموزش آنها به این ترتیب به نوعی از این شاخه به آن شاخه پریدن است لذا همان گونه که در بالا ذکر شد فقط بدانید که این کلمات بخشی از کلمات رزرو شده می باشد.
البته ناگفته نماند که در واقع سی شارپ راهکاری هم برای آنکه شما در صورت لزوم بتوانید از این کلمات بعنوان " شناسه " نیز استفاده کنید قرار داده و آن هم استفاده از علامت @ قبل آن کلمه می باشد.
مثلا کلمه رزرو شده Class را شما در صورت تمایل می توانید بصورت Class@ نوشته و از آن استفاده کنید .
ولی بهتر است برای بالا بردن خوانایی برنامه از این روش نیز کمتر استفاده کنید .
abstract
do
in
protected
true
as
double
int
public
try
base
else
interface
readonly
typeof
bool
enum
internal
ref
uint
break
event
is
return
ulong
byte
explicit
lock
sbyte
unchecked
case
extern
long
sealed
unsafe
catch
false
namespace
namespace
short
ushort
char
finally
new
sizeof
using
checked
fixed
null
stackalloc
virtual
class
float
object
static
void
const
for
operator
string
volatile
continue
foreach
out
struct
while
decimal
goto
override
switch
default
if
params
this
delegate
implicit
private
throw
تعدادی از کیوردها موسوم به کیوردهای متنی می توانند بدون استفاده از علامت (@) بعنوان شناسه بکار بروند لیست این کیوردها در پایین آمده است.
orderby
in
dynamic
add
let
get
await
var
partial
into
equals
ascending
join
from
async
when
yield
select
where
remove
set
nameof
global
by
value
on
group
descending