تایپ هایی مانند int، Boolean از این نوع هستند.
ValueType ها متغیرهایی هستند که به جای اینکه آدرس حافظه ای که دیتای آنها در آن ذخیره شده است را داشته باشند، مستقیماً خود داده را دارند.
Instanceهایی که از ValueTypeها ایجاد می شود، در جایی از حافظه که Stack نامیده می شود نگهداری می شوند.
به صورت RunTime و با کمترین Overhead می توان این متغیرها را ایجاد کرد، خواند، ویرایش و یا حذف کرد.
انواع ValueType ها عبارتند از
· Built-in Type: مانند int، Boolean، Char، Date Time
· User-defined: مانند Struct ها
· Enumeration
وقتی که متغیری از نوع ValueType ها به Procedure ای ارسال می شود، در حقیقت یک کپی از متغیر اصلی به آن Procedure ارسال شده است و هر تغییری که در این Procedure بر روی متغیر کپی اعمال می شود در مقدار متغیر اصلی تاثیری نخواهد داشت.
مقدار حافظه مورد نیاز Value Type ها در زمان کامپایل معین می شود و به طور RunTime تغییر نمی کند. همین ثابت بودن حجم حافظه باعث می شود که ValueType ها بتوانند در حافظه ای به نام Stack نگهداری شوند.
برای تعریف متغیری از نوع Boolean به صورت زیر عمل می شود:
Bool b = false;
اگر بخواهیم این متغیر بتواند بدون مقدار نیز باشد، به صورت زیر باید تعریف شود:
Nullable<bool> b = null; یا bool? b =null;