我正在尝试使用具有相同名称的不同但派生类型覆盖基类中的属性.我认为它可以通过协变或泛型,但我不知道该怎么做?
以下代码获取错误:
错误1'Sun.Cache':类型必须是'OuterSpace.Cache'才能匹配被覆盖的成员'OuterSpace.Cache'
public class OuterSpace {
public virtual OuterSpaceData Data {get; set;}
public virtual OuterSpaceAnalysis Analysis {get; set;}
public virtual OuterSpaceCache Cache {get; set;}
public class OuterSpaceData {
//Lots of basic Data Extraction routines eg
public virtual GetData();
}
public class OuterSpaceAnalysis {
//Lots of Generic Analysis on Data routines eg
public virtual GetMean();
}
public class OuterSpaceCache {
//Lots of Caches of Past Analysis Results:
public Dictionary<AnalysisType, List<Result>> ResultCache;
}
}
public class Sun : OuterSpace {
public …Run Code Online (Sandbox Code Playgroud) 我有一个数值分析程序,为简单起见计算类似于以下的算法:
y = ax^3 + bx^2 + cx + d;
Run Code Online (Sandbox Code Playgroud)
我在运行时计算a,b,c,d的值,并希望将以下等效项传递给a Func<double, double>.我可以在哪里设置X的值,并获得Y.
y = 12x^3 + 13x^2 + 14x + 15;
Run Code Online (Sandbox Code Playgroud)
其中12,13,14,15是运行时计算的数字.
我意识到这可以通过传入一个双数组来完成,就像这样:Func<double[], double>
但我试图避免传递常量(可能很多).
有没有办法在运行时在func中设置这些数字?
(最好不要计算func <>本身的a,b,c,d部分?a,b,c,d的计算是工作的80%)
例如:
a = ...
b = ...
c = ...
Func<x, double> {
((const)a) * x^3 + ((const)b) * x^2 + ((const)c) * x + 15;
}`
Run Code Online (Sandbox Code Playgroud)
对于ABCD的每次评估 - 我将评估10 x.