مشاهده منبع مطلب به زبان اصلی

 

هشت بیت فضا میگیرد

اعداد صحیح صفر تا 255 است

 

byte  a=12,b=23;

byte c = a + b ;

 

اولا ما هر چند تا متغیر را فقط با یک بار نوشتن نام نوع داده می توان از ان نوع تعریف کرد

 

مثلا در اینجا a , b هر دو از نوع بایت هستند

 

حتما با خودتان فکر می کنید جواب c می شود عدد 35 اما اشتباه می کنید . پیام خطا داده می شود

چرا ؟

چون بطور پیش فرض کامپیلر محاسبات سمت راست علامت مساوی را از نوع integer در نظر می گیرد لذا جواب بدست امده در متغیر نوع بایت جا نمی شود و پیام خطا می دهد

 

برای بر طرف کردن مشکل مشخص کنید که محاسبات سمت راست مساوی به نوع بایت تبدیل شود و در متغیر c قرار گیرد

byte c =(byte) ( a + b );

 

و یا اینکه متغیری که قرار است حاصل یک عبارت ریاضی را در بر گیرد ، از نوعی باشد که محدوده بزرگتری از اعداد را قبول کند

 

byte  a =12  , b = 20  ;

long   c  = a + b ;

 

 متغیر از  هر نوع داده ای  که تعریف شده باشد ، فقط داده های در محدوده  ان  نوع داده را قبول می کند

 

مثلا

 

 byte  a  = 3.2;

مقدار اعشاری را در متغیر از نوع بایت قرار می دهد . عمل گرد شدن خود بخود اتفاق نمی افتد لذا خطا می دهد

 

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

 

 byte  a  =  (byte) 3.2;

3.2 به نوع بایت تبدیل می شود و عدد 3 در متغیر a قرار میگیرد

 

مثال :

 byte  a  =  (byte) 4254124;

مشخص است که دستور بالا خطا دارد عدد به این بزرگی چطوری به عدد 0 تا 255 تبدیل شود ؟!!!

 

پارامتر از نوع  byte در متدها

 

 

متد یعنی زیر برنامه ای که خودمان تعریف می کنیم

 

در سی شارپ می توان چند زیر برنامه با نام مشابه داشت

 

من در اینجا دو زیر برنامه  به نام test تعریف می کنم . اولی پارامتری به نام a از نوع int دارد که پیام  welcome را نشان می دهد و دومی پارامتری به نام a از نوع byte دارد که پیام  سی شارپ را نشان می دهد

 

 void test1(int a)  {MessageBox.Show("welcome");}

 

 void test1(byte b)  {MessageBox.Show("c#");}

 

حال در رویداد کلیک روی دکمه متد test1 را با مقدار 14 صدا می زنم

 

  private void button1_Click(object sender, EventArgs e)


        {
              test1(14);
        }

 

 

ما دو تا test1 داریم . فکر می کنید کدام یک از این دو test1 فراخوانی می شود ؟

ان متدی که پارامترش از نوع int است . چرا که سی شارپ عددهایی که در محدوده int هستند را از نوع  int در نظر می گیرد 

 

حال چه کنیم که 14 را از نوع بایت در نظر بگیرد و test1 دیگر را اجرا کند ؟

براحتی . قبل از 14 ، عبارت زیر را قرار دهید تا 14 به بایت تبدیل شده و از نوع بایت در نظر گرفته شود

  private void button1_Click(object sender, EventArgs e)
        {
              test1(  (byte)  14);
        }