gpt4 book ai didi

c# - 如何在运行时优化 lambda?

转载 作者:太空宇宙 更新时间:2023-11-03 13:09:52 27 4
gpt4 key购买 nike

我有一个在运行时优化 lambda 表达式的测试工作。假设 lambda 包含一些“重”函数调用,我需要的是更改 lambda,以便将所有函数调用缓存到临时变量中,然后可以替换 lambda 主体中的实际函数调用。

它必须是一个函数,它获取一个 lambda 作为参数,并返回优化的 lambda,然后您可以调用它。

我想知道这是 C# 的哪一部分?我的意思是,像“了解反射”或“了解泛型”。在这种情况下我需要学习什么?

最佳答案

除非你的重函数调用是 deterministic ,并且你可以证明它们总是用相同的参数调用,你做不到。

例如,在 C# 中

var lst = new List<string> { "Foo", "Bar" };

bool r1 = lst.Remove("Foo"); // true, and has modified lst
bool r2 = lst.Remove("Foo"); // false, and hasn't modified lst

bool r3 = lst.Remove("Bar"); // true, and has modified lst, note different parameter
bool r4 = lst.Remove("Baz"); // false, and hasn't modified lst, note different parameter

如何检测 Remove 是否具有确定性?你不能(从技术上讲你可以拆解它并检查它,但这非常困难)......然后你怎么能检测它是否正在使用相同的参数调用?这是可行的,但相当困难。

现在...作为测试工作...我看到三种可能性:

  • 这是一个错误的测试,你必须理解并报告它
  • 你没有理解测试工作
  • 你没有给我们一些重要的信息(例如,你必须替换一些没有参数并且是静态的或类似的,并且保证是确定性的特定方法调用)

关于c# - 如何在运行时优化 lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29408960/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com