はの私は、一方が他方に転換され、二つのクラスがあるとしましょう:今、私はそれがFoo
にキャストパラメータとしてオブジェクトを期待するメソッドを無効なキャスト例外オブジェクトパラメータとして渡されたときに、
public class Foo { }
public class Bar
{
public static implicit operator Foo(Bar bar) => new Foo();
}
を持っています。
public void DoSomething(object o)
{
var foo = (Foo)o;
/* Do something with foo here */
}
は今、私はそうのように、このメソッドを呼び出します。
var bar = new Bar();
var foo = (Foo)bar;
DoSomething(foo);
DoSomething(bar);
期待通りのコールDoSomething(bar)
がInvalidCastException
をスローコールDoSomething(foo)
作品ながら。 2番目のメソッド呼び出しでランタイムがユーザー定義型変換演算子を使用できないのはなぜですか?
それはデリゲートを一致させる必要があるため、私は、パラメータの種類を変更することはできません。 –
@ThomasSchremser: 'Action