В основном, когда вы хотите обеспечить преобразования между типами. LINQ to XML дает хорошие примеры... Есть неявное преобразование из string в XName, поэтому вы можете написать:
XName name = "element";
но есть явное преобразование из XAttribute
в int
(и многие другие типы), поэтому вы должны включить приведение в свой код:
int value = (int) element.Attribute("age");
Очень хорошо подумайте, прежде чем использовать неявные преобразования - они редко являются хорошей идеей; LINQ to XML использует их с большим эффектом, но они могут сбить с толку. Даже явные преобразования, определяемые пользователем, могут удивить неопытного читателя.
Они используются при перегрузке операторов. Вот ссылка на статью MSDN.