آشنایی با Implicit Casting و Explicit Casting
نویسنده: مسعود پاکدل
تاریخ: ۱۳۹۲/۰۳/۱۸ ۲۳:۳۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
public class Book
{
public int Code { get; set; }
public string Title { get; set; }
public string Category { get; set; }
} public class NoteBook
{
public int Code { get; set; }
public string Title { get; set; }
} static void Main( string[] args )
{
Book book = new Book()
{
Code = 1,
Title = "Book1",
Category = "Default"
};
NoteBook noteBook = new NoteBook();
noteBook = (NoteBook)book;//Compile error
noteBook = book as NoteBook;//Compile error
}public class Book
{
public int Code { get; set; }
public string Title { get; set; }
public string Category { get; set; }
public static explicit operator NoteBook( Book book )
{
return new NoteBook()
{
Code = book.Code,
Title = book.Title
};
}
}static void Main( string[] args )
{
Book book = new Book()
{
Code = 1,
Title = "Book1",
Category = "Default"
};
NoteBook noteBook = new NoteBook();
noteBook = (NoteBook)book;//Correct
}در بالا مشاهده میکنید که حتما باید به طور صریح عملیات Cast رو انجام دهیددر غیر این صورت همچنان خطا خواهید داشت. اما میتوان این مراحل رو هم نادیده گرفت و تبدیل رو به صورت Implicit انجام داد.
#Implicit Casting
public class Book
{
public int Code { get; set; }
public string Title { get; set; }
public string Category { get; set; }
public static implicit operator NoteBook( Book book )
{
return new NoteBook()
{
Code = book.Code,
Title = book.Title
};
}
}static void Main( string[] args )
{
Book book = new Book()
{
Code = 1,
Title = "Book1",
Category = "Default"
};
NoteBook noteBook = new NoteBook();
noteBook = book;//Correct
}