Tag: 副作用

如何以编程方式检测副作用(编译时间或运行时间)?

我有一个关于缓存的想法,我已经开始实现了: 记忆函数并将返回与Velocity中的函数签名的散列一起存储。 使用PostSharp ,我想检查缓存并返回返回值的重新水合表示,而不是再次调用该函数。 我想使用属性来控制这种行为。 不幸的是,如果他们爱上了性能提升并开始使用缓存属性(包括一些带有副作 当memoization库怀疑某个函数可能会导致副作用时,我想发出一个编译器警告。 如何判断代码可能会导致使用CodeDom或Reflection产生副作用?

使用EmptyWorkingSet有什么副作用?

我正在使用下面的代码释放一些正在运行的程序的内存,因为我自己的程序需要大量内存资源才能更快地运行。 [DllImport(“psapi.dll”)] public static extern bool EmptyWorkingSet(IntPtr hProcess); public FreeMem(string programName){ EmptyWorkingSet(Process.GetCurrentProcess().Handle); foreach(Process process in Process.GetProcesses(programName)) { try { EmptyWorkingSet(process.Handle); } catch (Exception) { … } } } 它看起来工作正常,我能够将某些程序(如资源管理器)的内存使用量从100,000 Kb降低到2,000 Kb。 这很不错,但这样做有副作用吗? 一些商业软件也使用这个,如Yamicsoft Vista / Xp管理器和Firefox优化器,仅举几例,所以我在想,如果这没有不良副作用或存在?

C#范例:对列表的副作用

我试图进一步了解副作用以及如何控制和应用它们。 在下面的航class列表中,我想设置满足条件的每个航class的属性: IEnumerable fResults = getResultsFromProvider(); //Set all non-stop flights description fResults.Where(flight => flight.NonStop) .Select(flight => flight.Description = “Fly Direct!”); 在这个表达式中,我对我的列表有副作用。 从我有限的知识,我知道前。 “LINQ仅用于查询 ”和“列表中只有少数操作, 分配或设置值不是其中之一”,“列表应该是不可变的”。 上面的LINQ语句有什么问题,应该如何更改? 我在哪里可以获得有关上述场景的基本范例的更多信息?