ایمنی نوع در دات نت برای جلوگیری از نگاه کردن اشیاء یک نوع به حافظه اختصاص داده شده برای شی دیگر معرفی شده است. نوشتن کد ایمن همچنین به معنای جلوگیری از از دست رفتن داده ها در هنگام تبدیل یک نوع به نوع دیگر است.
دقیقا به چه معناست؟ فرض کنید من دو نوع تعریف شده در زیر دارم:
- public class MyType
- {
- public int Prop{ get; set;}
- }
- public class YourType
- {
- public int Prop{get;set;}
- public int Prop1{get;set;}
- }
حالا فرض کنید، من یک شی از MyType به شکل زیر ایجاد می کنم:
- MyType obj = new MyType();
در حافظه، obj به 4 بایت فضا ارجاع می دهد و فرض کنید در کنار آن قسمت حافظه رشته دیگری باشد. حالا فرض کنید من obj خود را به YourType میدهم که خوشبختانه در داتنت اصلا امکانپذیر نیست ، اما برای لحظهای تصور کنید که ممکن است، در این صورت کد من چیزی شبیه به شکل زیر خواهد بود.
- YourType obj1 = (YourType)obj; // Here we will get compile time error
و فرض کنید، مطابق شکل زیر، Prop را با استفاده از مرجع obj1 اختصاص می دهم:
- obj1.Prop = 10;