我已经看到大量答案说这种情况并不存在,原因有很多 - 而且很多都是有道理的。
对于我的用例,我觉得我所做的事情确实有意义,所以逻辑上应该有办法做到这一点......
我想要一系列静态类,每个类有3个方法。每个类的第一个方法对于每个类都是唯一的,但后两个方法只是第一个方法的转换;即。
public static class A{
public static double[][] x(...){...}
public static double[][] y(...){//calls x in here and operates on output}
public static double[][] z(...){//also calls x in here and operates on output}
}
public static class B{
public static double[][] x(...){...} //different
public static double[][] y(...){} //identical to A.y, but calls B.x inside.
public static double[][] z(...){} //identical to A.Z, but calls B.x inside.
}
public static class C{
public static double[][] x(...){...}
public static double[][] y(...){} //identical to A.y, but calls C.x inside.
public static double[][] z(...){} //identical to A.Z, but calls C.x inside.
}
我宁愿有一种方法来定义静态函数y
和z
,然后只需为每个类定义x
实际上我实际上使用
这些类本质上只是不同方法的容器,它们本质上是相同的,但具有不同的底层函数。
有没有办法在没有大量样板的情况下做到这一点?
答案 0 :(得分:0)
作文怎么样?
public static class Common
{
public static double[][] X(Func<double[][], ...> func, ...) => func(...);
}
public static class A
{
public static double[][] X(...) => ...
public static double[][] Y(...) => Common.X(X, ...); // use A.X
public static double[][] Z(...) => Common.X(X, ...); // use A.X
}
public static class B
{
public static double[][] X(...) => ...
public static double[][] Y(...) => Common.X(X, ...); // use B.X
public static double[][] Z(...) => Common.X(X, ...); // use B.X
}
Common.X
可以是A
(或B
)的公开方法。 Afaik无法建立静态成员protected
,但也许你不在乎是否有人可以访问Common.X
。