Вопрос с вопросом о неявной конверсии С#
Мне предоставлен пример:
MyClass myclass = 3;
Как можно сделать это действительным выражением? Какой код мне нужно включить в MyClass
для поддержки неявного преобразования из int
?
Ответы
Ответ 1
Вам нужен оператор неявный оператор преобразования:
public class MyClass
{
private readonly int value;
public MyClass(int value)
{
this.value = value;
}
public static implicit operator MyClass(int value)
{
return new MyClass(value);
}
}
Лично я не большой поклонник неявных преобразований большую часть времени. Иногда они полезны, но тщательно подумайте, прежде чем вставлять их в свой код. Они могут быть довольно запутанными, когда вы читаете код.
С другой стороны, при использовании вдумчиво они могут быть удивительно удобными - я думаю, в частности, о преобразованиях от string
до XName
и XNamespace
в LINQ to XML.
Ответ 2
Вот как:
public class MyClass
{
public static implicit operator MyClass(int i)
{
return new MyClass(i);
}
}
В этом случае используется функция С#, называемая неявный оператор преобразования.
Ответ 3
Возможно, если MyClass
имеет неявное преобразование из int
.
Использование операторов преобразования
Ответ 4
Просто выполните неявный оператор преобразования.
Ответ 5
Вам нужно перегрузить неявный оператор-конструктор:
public static implicit operator MyClass (int rhs)
{
MyClass c = new MyClass (rhs);
return c;
}