class Program
{
static void Main( string[ ] args)
{
double doub = 15.7 ;
Foo a = doub; //error
}
}
struct Foo
{
public int value;
public static implicit operator Foo( int val)
{
return new Foo { value = val } ;
}
}
ICAgIGNsYXNzIFByb2dyYW0KICAgIHsKICAgICAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICAgICAgewogICAgICAgICAgICBkb3VibGUgZG91YiA9IDE1Ljc7CiAgICAgICAgICAgIEZvbyBhID0gZG91YjsgLy9lcnJvcgogICAgICAgIH0KICAgIH0KCiAgICBzdHJ1Y3QgRm9vCiAgICB7CiAgICAgICAgcHVibGljIGludCB2YWx1ZTsKICAgICAgICBwdWJsaWMgc3RhdGljIGltcGxpY2l0IG9wZXJhdG9yIEZvbyhpbnQgdmFsKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBGb28geyB2YWx1ZSA9IHZhbCB9OwogICAgICAgIH0KICAgIH0=
compilation info
prog.cs(6,21): error CS0266: Cannot implicitly convert type `double' to `Foo'. An explicit conversion exists (are you missing a cast?)
Compilation failed: 1 error(s), 0 warnings
stdout