Action<T>
값을 설정할 때 조건문에이 이상한 문제가 발생합니다. 정상적인 방법 인 if
을 사용하여 해결하기가 쉽기 때문에이 문제를 해결하는 방법을 모르겠습니다.조건부 명령문, 일반 대리자 불필요한 캐스트
public class Test
{
public bool Foo { get; set; }
public Action<bool> Action { get; set; }
public void A()
{
Action = Foo ? B : C;//Gives compiler error
}
public void B(bool value)
{
}
public void C(bool value)
{
}
}
이 메시지
'방법 그룹'과 '방법 그룹'사이에 암시 적 변환이 없습니다와 나에게 컴파일러 오류를 제공합니다 :
여기 내 문제입니다.
나는 이것이 왜 불법인지 알 수 없기 때문에 이상합니다. 왜 캐스팅이 필요로
public void A()
{
Action = Foo ? (Action<bool>) B : C;
}
그래서 어쩌면 당신이 질문을 읽을 수 있습니다 : 그런데
는 아래의 구문은 (보기의 컴파일러의 관점에서)이 유효 만들 것인가?
나는 C# 컴파일러가 그것을 확인하기에 충분히 똑똑하다고 생각했다. –