能否保存用于后续确定值的指令而非当前实际值?需C#示例
可行性确认与C#示例
当然可行!这个需求本质是延迟计算(Lazy Evaluation)——我们保存的是计算值的逻辑(也就是你说的「指令」),而不是立刻计算出的结果,等到后续需要的时候再执行这段逻辑获取最新的值。
在C#里,最直接的实现方式就是用Func<T>委托,它可以封装一个无参数但返回指定类型结果的方法,完美契合你的需求。下面是一个简单示例:
using System; class Program { static void Main() { // 保存获取当前时间的「指令」,而不是当前时间的实际值 Func<DateTime> getCurrentTime = () => DateTime.Now; Console.WriteLine("第一次获取值:"); // 后续需要时执行指令,得到实时值 Console.WriteLine(getCurrentTime()); // 等待3秒,模拟时间流逝 System.Threading.Thread.Sleep(3000); Console.WriteLine("\n三秒后第二次获取值:"); // 再次执行指令,得到最新的时间 Console.WriteLine(getCurrentTime()); } }
运行这个程序你会发现,两次输出的时间是不同的——因为我们每次调用getCurrentTime()时,才会执行DateTime.Now这个「指令」,而不是一开始就把时间固定下来。
如果你的「指令」需要参数,也可以用带参数的委托,比如Func<TInput, TResult>。比如保存一个计算两数之和的指令:
Func<int, int, int> addNumbers = (a, b) => a + b; // 后续需要时传入参数执行指令 int result = addNumbers(5, 3); // 得到8
这种方式不仅能处理时间,还能适配各种需要延迟计算的场景,灵活性很高。
内容的提问来源于stack exchange,提问作者Sebastian Norr
相关产品推荐
相关产品推荐

