双向隐式铸造?

时间:2012-10-18 14:05:27

标签: c#

根据我的理解,我可以将类型Foo自动转换为int,当它传递给期望int的方法时。我还可以做另一个方向吗?即有一个int隐式地将自己投射到Foo并且这个定义也在foo 中?

我的理解可能不正确。

2 个答案:

答案 0 :(得分:2)

你可以。

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);
    }
}

本文中的示例将更好地展示,然后我可以解释: http://msdn.microsoft.com/en-us/library/z5z9kes2.aspx

答案 1 :(得分:1)

是的,你可以。

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 };
    }
}