انواع داده ای (یا متغیر هایی که تعریف می کنیم) به دو گروه اصلی در سی شارپ تقسیم می شوند :
Value Types : این نوع داده ای که به انواع مقداری هم معروف هستند ، هنگام تعریف متغیری از این نوع ، به صورت مستقیم مقدار را در خود ذخیره می کنند. یعنی به صورت مستقیم در حافظه هم تعریف می شوند و هم مقدار دهی می شوند.
تمام انواع داده ای مقداری یا Value Type از فضای نام System.ValueType مشتق شده اند.
در مثال بالا ما متغیری از نوع int به نام i تعریف کرده ایم که مقدار 100 را در خود ذخیره میکند . به این شکل که یک خانه از حافظه به آن اختصاص داده شده است و این خانه یک آدرس دارد که مقدار 100 داخل این خانه قرار داده شده است. به این ترتیب باید برای خواندن این مقدار متغیر i را صدا بزنیم.
ارسال با مقدار :
شما هنگامی که یک متغیر تعریف میکنید و آن را به عنوان پارامتر ورودی برای یک متد (Method) ارسال می کنید ، یک کپی از آن متغیر در حافظه ایجاد می شود و عملیات درون متد روی داده کپی انجام می شود و هیچ تغییری در مقدار اصلی ایجاد نمی شود.
internal class Program
{
static void Main(string[] args)
{
int a = 10;
int result=Sum(a);
Console.WriteLine(result); // output = 20
Console.WriteLine(a); // output = 10
}
static int Sum(int x)
{
return x + 10;
}
}
نتیجه : در مثال بالا یک متغیر به نام a تعریف کرده ایم مقدار 10 را به آن انتساب داده ایم و یک متد به نام Sum تعریف کرده ایم که یک متغیر از نوع int به نام x به عنوان پارامتر ورودی دریافت میکند . و سپس a را به این متد پاس داده ایم . داخل بدنه این متد مقدار x را با 10 جمع زده ایم و نتسجه نهایی را در خروجی چاپ کرده ایم .
همانطور که مشاهده میکنید هنگام چاپ نتیجه متد مقدار 20 را نشان می دهد و متغیر a همان 10 را نشان می دهد که در ابتدا بود.