2
이의 내가 하나가 다른으로 전환 두 개의 클래스가 있다고 가정 해 봅시다 : 잘못된 캐스트 예외 객체 매개 변수로 전달하면
public class Foo { }
public class Bar
{
public static implicit operator Foo(Bar bar) => new Foo();
}
지금 나는 그것이
Foo
에 캐스트 매개 변수로 객체를 기대하는 방법이 있습니다. 전화 통화
DoSomething(bar)
이
InvalidCastException
을 발생 예상으로
DoSomething(foo)
작동하는 동안
var bar = new Bar();
var foo = (Foo)bar;
DoSomething(foo);
DoSomething(bar);
:
public void DoSomething(object o)
{
var foo = (Foo)o;
/* Do something with foo here */
}
는 지금은이 방법과 같이 호출합니다. 두 번째 메서드 호출에서 런타임에서 사용자 정의 형식 변환 연산자를 사용할 수없는 이유는 무엇입니까?
내가 매개 변수 유형을 변경할 수 없습니다 : 당신이 모든 매개 변수 유형을 변경할 수없는 경우, 당신은 항상 방법
dynamic
로 변환 할 수 있습니다. –@ThomasSchremser : -; 예를 들어 '당신은 방법은'dynamic'을 받아들이와 방법 그룹 변환과'액션