Open Aida-Hagh opened 4 months ago
کست کردن مرجعها (Reference Casting): کست یک شیء به یک نوع پایهتر یا مشتقتر از آن
object obj = "Hello World"; string str = (string)obj; // کست صریح از object به string
کست کردن با استفاده از as :
object obj = "Hello World"; string str = obj as string; if (str != null) { Console.WriteLine(str); } //برمی گرداند null ، اگر تبدیل ناموفق باشد، به جای پرتاب یک استثناء
کست کردن با استفاده از is :
object obj = "Hello World"; if (obj is string) { string str = (string)obj; Console.WriteLine(str); } // خواهد بود true اگر شیء قابل تبدیل به نوع مورد نظر باشد، نتیجه
تبدیل یک نوع داده به نوع دیگری را کست کردن میگویند. به دو صورت زیر انجام شود. : 1-کست کردن ضمنی (Implicit Casting): زمانی اتفاق میافتد که نوع مقصد بزرگتر از نوع مبدأ باشد و احتمال از دست دادن اطلاعات وجود نداشته باشد.در مثال زیر double میتواند تمام مقادیر int را بدون از دست دادن اطلاعات نگه دارد.
int x= 19; double y= x;
2- کست کردن صریح (Explicit Casting): به صورت دستی و با استفاده از عملگر کستینگ " () " انجام می شود.به این صریح میگن چون ممکن قسمت اعشاری از دست بره.
double y= 19.75; int x= (int)y;
"Boxing" و "Unboxing":
int number = 123; object obj = number; // Boxing (تبدیل نوع مقداری به یک نوع مرجع)
int number = (int)obj; // Unboxing (یک نوع مرجع که قبلاً بستهبندی شده بود، دوباره به نوع مقداری اصلی خود تبدیل میشود.)
نکته: Unboxing باید به نوع اصلی صحیح انجام شود، در غیر این صورت InvalidCastException رخ خواهد داد. به عنوان مثال، نمیتوانید یک object که شامل یک int است را به یک double unbox کنید.