【发布时间】:2021-06-28 21:51:00
【问题描述】:
我有一个以public MyClass(Form form) 作为构造函数的类
我可以在这个类中使用我在派生自Form 的类中创建的函数吗?(命名为DerivedClass)
现在我在想,检查form 是否为DerivedClass 然后使用它的功能,但它似乎不起作用。
if (form is DerivedClass)
{
form.DerivedClassFunction();
}
这样做我得到同样的错误:
“Form”不包含“DerivedClassFunction”的定义
【问题讨论】:
-
您需要转换为真实类型:
((Derived)form).DerivedClassFunction();。或者简单地使用它:(form as Derived)?.DerivedClassFunction();... -
或
if (form is Derived derived) { derived.DerivedClassFunction(); } -
虽然上述建议有效,但您应该重新考虑您的设计。通常,基类不知道 - 也不需要 - 任何事情 可能的派生类。
-
投票有点不可预测:不要担心孤立的一两次投票。请注意,您的问题不包含minimal reproducible example - 我无法直接粘贴到例如dotnetfiddle.net,看看你的问题
-
我想回应@HimBromBeere 上面所说的内容。任何时候你必须这样做都会产生巨大的代码气味 - 请重新考虑你的方法。
标签: c#