Z tego, co rozumiem, mogę automatycznie rzutować typ Foo na int, gdy jest przekazywany do metody oczekującej int. Czy mogę też zrobić inny kierunek? tj. mieć int niejawnie rzutowany na Foo i czy ta definicja również znajduje się w foo?

Moje rozumienie może być błędne.

c#
0
Joshua Enfield 18 październik 2012, 18:05

2 odpowiedzi

Najlepsza odpowiedź

Możesz.

class Foo
{
    public Foo(int value)
    { 
        this.Value = value; 
    }

    public int Value { get; set; }

    // ImplicitSample -> int
    public static implicit operator int(Foo input)
    {
        return input.Value;
    }

    //  string -> ImplicitSample
    public static implicit operator Foo(int input)
    {
        return new Foo(input);
    }
}

Próbka w tym artykule pokaże to lepiej, niż mogę wyjaśnić: http://msdn.microsoft.com/en-us/library/z5z9kes2.aspx

2
MrDosu 18 październik 2012, 19:24

Tak, możesz.

public class Foo
{
    public int Value { get; set; }

    public static implicit operator int(Foo foo)
    {
        return foo.Value;
    }
    public static implicit operator Foo(int value)
    {
        return new Foo() { Value = value };
    }
}
1
Servy 18 październik 2012, 19:08