小编Dan*_*bel的帖子

为什么Lazy <T>受限于静态上下文?

我想使用Lazy T来实现memoization,但初始化函数似乎需要一个静态上下文.

例如,以下代码拒绝编译,警告非静态成员ab不可访问.我不清楚为什么会这样,因为Lazy对象本身就是一个实例成员,并且在静态上下文中没有可见性.

public class SomeExpensiveCalculation
{
    private int a;
    private int b;
    public Lazy<int> Result = new Lazy<int>(() => a + b); //nope!
}
Run Code Online (Sandbox Code Playgroud)

c# .net-4.0 lazy-initialization

31
推荐指数
2
解决办法
6312
查看次数

将窄类型转换为更宽泛的类型以节省内存并保持高精度计算是一个糟糕的想法?

我正在处理财务数据,所以它有很多,它需要相对高精度(64位浮点或更宽).

围绕我的工作场所的标准做法似乎是将其全部表示为c#decimal类型,这是一个128位宽的浮点,专门用于支持round-off free base10操作.

由于64位足够宽以保持代表性的精度,所以将数据转换为更宽的类型进行所有计算(mult,div,add等)然后回到64位以便坐在内存(这是它花费的地方)是荒谬的.大部分时间)?

供参考:内存绝对是限制资源.

c# memory performance casting decimal

5
推荐指数
2
解决办法
512
查看次数

F#是否适合生产环境?

我相信一种功能语言对我公司在(财务)工作的领域有帮助,我们在这里阅读大量数据,对其进行一些数学处理,然后再次存储.从根本上讲非常可并行化并且不适合具有状态的广泛对象图的东西(在我的估计中).

作为一个.NET商店,我立刻想到了F#,但我担心"研究"这几个词突出地散布在几乎所有的MS材料上.

有谁知道F#是否会成为MS支持未来的事情,或者我是否会更好地试图说服与Scheme/Haskell /等人合作的权力?

f#

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

Scala中for-comprehension的补救语法问题

我在Scala 2.10中遇到for-comprehension的语法问题.

for(a <- List(Some(1,2)); b <- a) yield b 评估为 List(1,2)

那么为什么不for(a <- Some(List(1,2)); b <- a) yield b评价同样的东西呢?

类型检查器抱怨第二个表达式(b <-a)说它List[Int] 在期待时找到了Option[?]

scala list-comprehension

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