Вопрос с вопросом о неявной конверсии С#

Мне предоставлен пример:

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.

Ответ 4

Просто выполните неявный оператор преобразования.

Ответ 5

Вам нужно перегрузить неявный оператор-конструктор:

public static implicit operator MyClass (int rhs)
{ 
    MyClass c = new MyClass (rhs);
    return c;
}