에 파생 클래스를 캐스팅 할 수 없습니다나는 내 수업에 몇 가지 대화 상자를 가지고 있고이 기능을 초기화하기 위해 노력하고있어 그 기본 유형
을error CS1503: Argument 1: cannot convert from 'ref Microsoft.Win32.OpenFileDialog' to 'ref Microsoft.Win32.FileDialog'
InitializeFileDialog(ref dialog);
나는 캐스팅을 시도하지만 어떤 이유로 수 없습니다. 뭐가 문제 야? FileDialog
이 추상적인가? 나는 그것이 이유인지 찾는 것을 시도했지만 유용한 것을 찾을 수 없었다. 여기
Microsoft.Win32
에서 발견되는 선언이다 : 나는 또한 제네릭을 사용하려고
public abstract class FileDialog : CommonDialog
public sealed class OpenFileDialog : FileDialog
그것은 작동하지 않았다. 내가 뭘 놓치고 있니?
'ref' 키워드를 제거하십시오. 객체는 참조로 전달되므로 위의 예에서는 객체가 필요하지 않습니다. – adrianbanks
@adrianbanks 문제가 해결되었습니다! 고맙습니다. 그러나 왜 그것이 오류를 던 졌는가? – MasterMastic
@adrianbanks는 정확하지만,'ref'는 전달 된 변수에 다른 객체를 할당 할 수 있다는 점에 유의할 필요가 있습니다. 따라서 어떤 경우에는 객체를 전달할 때 유용합니다. 객체 변수에'null '을 할당해도 원래의 객체는 함수 범위 밖에서 바뀌지 않습니다. 자세한 내용은 http://stackoverflow.com/questions/186891/why-use-ref-keyword-when-passing-an-object를 참조하십시오. –