小编Jar*_*oad的帖子

使用派生类型和相同名称覆盖属性C#

我正在尝试使用具有相同名称的不同但派生类型覆盖基类中的属性.我认为它可以通过协变或泛型,但我不知道该怎么做?

以下代码获取错误:

错误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)

c# inheritance overriding covariance

10
推荐指数
2
解决办法
2万
查看次数

我可以使用运行时变量设置Func <>函数,以省略在C#中将它们作为参数传递吗?

我有一个数值分析程序,为简单起见计算类似于以下的算法:

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.

c# delegates runtime func

1
推荐指数
1
解决办法
364
查看次数

标签 统计

c# ×2

covariance ×1

delegates ×1

func ×1

inheritance ×1

overriding ×1

runtime ×1