【发布时间】:2014-01-26 05:30:34
【问题描述】:
我有一个接受两个基类参数的函数。在这个函数中,我希望在许多派生类上测试这些参数的类型,然后调用一个多态函数。请参阅下文以查看我的第一次尝试,它不会编译。
public static double Intersect(baseClass s0, baseClass s1)
{
if (s1 is derivedClassB) return (s0 as derivedClassA).PolyMethod((derivedClassB)s1);
else if (s1 is derivedClassC) return (s0 as derivedClassA).PolyMethod((derivedClassC)s1);
else return 0.0;
}
我想我可以使用类似的东西
Type dType = s0.GetType();
(s0 as dType).PolyMethod(derivedClassB) s1);
但这也不起作用。
【问题讨论】:
-
请正确格式化您的代码。
-
抱歉,我尝试简化时出了点问题……现在认为它的格式没问题
-
有什么理由不使用 C# 中对多态方法的内置支持? virtual 关键字?
-
我在基类的 PolyMethod 定义中使用了 virtual ......这只是我用来处理不同类型的单次使用静态方法中的一个问题。我正在为 PolyMethod 使用 virtual 和覆盖
标签: c# polymorphism derived-class