如果基类作为参数调用,我可以使用派生类函数吗?
c#
我有一个public MyClass(Form form)作为构造函数的类
我可以使用我在从Form这个类派生的类中创建的函数吗?(命名DerivedClass)
现在,我就在想,如果检查form是DerivedClass再使用它的功能,但它似乎没有工作时。
if (form is DerivedClass)
{
form.DerivedClassFunction();
}
这样做我得到同样的错误:
“Form”不包含“DerivedClassFunction”的定义
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs1061?f1url=%3FappId%3Droslyn%26k%3Dk(CS1061)
回答
您必须通过以下方式将其转换为派生类型:
if (form is Derived)
{
((Derived)form).DerivedClassFunction();
}
或(C# 7 中的新功能):
if (form is Derived derived)
{
derived.DerivedClassFunction();
}