Рассмотрим явное и неявное приведения. Предположим, что мы создаем класс, который должен иметь возможность приведения к данному типу, например:
class Test{}
int i=10;
Test t=(Test)i;
string s="222";
Test t1=s;
В представленном примере вначале используется явное приведение, а затем неявное.
Для использования этой возможности приведения необходимо реализовать следующий код в классе Test:
public class Test
{
private int i;
/**
Определяем оператор явного приведения. Он позволяет осуществлять явное приведение от int к Test. Например, int i=10; Test t=(Test)i;.
*/
public static explicit operator Test(int i)
{
return new Test(i);
}
/**
Определям оператор неявного приведения. Он позволяет осуществлять приведение от string к Test.
*/
public static implicit operator Test(string s)
{
int j=Convert.ToInt32(s);
return new Test(j);
}
public Test(int i)
{
this.i=i;
}
public override string ToString()
{
return string.Format("field value: {0}",i);
}
}
Для тестирования приведенного выше класса напишем следующий метод Main:
public static void Main(string[] args)
{
Test t1=(Test)100;
Console.WriteLine("Test: "+t1);
Test t2="222";
Console.WriteLine("Test: "+t2);
}
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий