نوع داده Refrence Type + Value Type در سی شارپ
سی شارپ دارای یک سامانه نوع یکپارچهاست که به آن CTS میگویند. این بدان معناست که تمام انواع، شامل موارد اصلی مانند Integerها، مشتق شده از System.Object هستند. به عنوان مثال، هر نوع یک متد به نام ToString() را به ارث میبرد. بخاطر کارایی، انواع اولیه (و انواع مقداری) بهطور داخلی فضایی برای آنها بر روی پشته در نظر گرفته میشود
انواع داده
CTS دادهها را به دو نوع تقسیم میکند:
نوع مقداری (Value Type)
نوع مرجعی (Refrence Type)
انواع دادهای توده سادهای از داده میباشند. نمونههای انواع دادهای نه هویت مرجعی دارند و نه مفاهیم مقایسه مراجع را. برای مقایسه برابری یا عدم برابری انواع دادهای، خود مقدار دادهها را با یکدیگر مقایسه میکنیم مگر اینکه عملگرهای مشابه دوباره تعریف شده باشند. مقادیر دادههای مرجعی همیشه یک مقدار پیشفرض دارند و همیشه میتوانند ایجاد یا کپی شوند. یکی دیگر از محدودیتهای انواع دادهای این ات که آنها نمیتوانند از یکدیگر مشتق شوند (ولی میتوانند اشتراکاتی داشته باشند) و هم چنین نمیتوانند در سازنده مقدار دهی اولیه شوند. مثالی از انواع دادهای، بعضی از انواع اولیه مانند int و float و char و System.DateTime میباشند. در مقابل، انواع مرجعی مفهوم تعریف مرجعی را دارند (که در آن هر نمونه از نوع مرجع، بهطور ذاتی از دیگر نمونهها جدا میشود، حتی اگر داده هر دو نمونه یکی باشد). این دقیقاً نمونه مشابه مقایسه تساوی یا عدم تساوی دادههای مرجعی است، که در آن آزمایش برای مرجعها از دادهایها سریع تر است. در کل نه همیشه امکان تعریف نمونه مرجعی وجود دارد و نه امکان کپی یا نمایش مقادیر مقایسه دو نمونه؛ ولی به هر حال انواع مرجعی خاص میتوانند این اعمال را از طریق سازندههای عمومی یا اجرای واسطهای مشابه (مثل ICloneable یا IComparable) انجام دهند. نمونههایی از انواع مرجعی، اشیاء، System.String و Sysmet.Array میباشند. هر دو نوع داده قابلیت انعطاف توسط تعریف به وسیله کاربر را دارند. در واقع وقتی ما نوع دادهای را به تابع ای ارسال میکنیم، آدرس داده نیز فرستاده میشود. البته این امر پیشفرض است ولی برای دادههای مثل آرایه، رشتهای، آدرس فرستاده میشود و ارسال از نوع مرجع میشود
Boxing و UnBoxing
Boxing عمل تبدیل مقدار نوع دادهای به نوع مرجع مشابه آن میباشد.
متال:
int foo = 42;// Value type...
object bar = foo;// foo is boxed to bar.
int foo = 42;// Value type.
object bar = foo;// foo is boxed to bar.
int foo2 = (int)bar;// Unboxed back to value type.
سی شارپ به برنامهنویس با استفاده از کلمه کلیدی Struct اجازه میدهد تا انواع مقداری User-defined را ایجاد کند. از دیدگاه برنامهنویسی، آنها کلاسهای سبک وزن به نظر میرسند. برخلاف کلاسها (که بر روی heap قرار میگیرند) و شبیه به انواع اولیه استاندارد مانند انواع مقداری Structها نیز بر روی پشته قرار میگیرند. آنها همچنین میتوانند قسمتی از یک شئ باشند، یا در یک آرایه مرتب شوند، بدون حافظه غیر مستقیمی که بهطور معمول برای انواع کلاس تخصیص مییابد
در تصویر این پست نوع داده ها رو تو جدول نشون دادم اما برای خوانایی بهتر دوباره مینویسم
نوع داده byte: در این نوع داده می توان از بازه 0 تا 255 را ذخیره کرد.
نوع داده sbyte: در این نوع داده می توان از بازه 128- تا 127 را ذخیره کرد.
نوع داده short: در این نوع داده می توان از بازه 32،768- تا 32،767 را ذخیره کرد.
نوع داده ushort: در این نوع داده می توان از بازه 0 تا 65،535 را ذخیره کرد.
نوع داده int: در این نوع داده می توان از بازه 2،147،483،648- تا 2،147،483،647 را ذخیره کرد.
نوع داده uint: در این نوع داده می توان از بازه 0 تا 4،294،967،295 را ذخیره کرد.
نوع داده long: در این نوع داده می توان از بازه 9،223،372،036،854،775،808- تا 9،223،372،036،854،775،807 را ذخیره کرد.
نوع داده ulong: در این نوع داده می توان از بازه 0 تا 18،446،744،073،709،551،615 را ذخیره کرد.
نوع داده float: در این نوع داده می توان از بازه 3.402823e38- تا 3.402823e38 را ذخیره کرد.
نوع داده double: در این نوع داده می توان از بازه 1.79769313486232e308- تا 1.79769313486232e308 را ذخیره کرد.
نوع داده decimal: در این نوع داده می توان از بازه 79228162514264337593543950335- تا 79228162514264337593543950335 را ذخیره کرد
ds
data type c#,اموزش سی شارپ,انواع داده ها سی شارپ,در سی شارپ,زبان برنامه نویسی چند سکویی,سورس سی شارپ,سی شارپ,محمدباقر آیرملو,مقایسه زبانهای برنامه نویسی,نوع داده Refrence Type,نوع داده Refrence Type + Value Type,نوع داده Value Type,کدنویسی سی شارپ