gpt4 book ai didi

c# - 有没有办法在 C# 中内联委托(delegate)?

转载 作者:行者123 更新时间:2023-11-30 13:13:12 29 4
gpt4 key购买 nike

这是我正在处理的一个简化场景。循环结构有多种方法。

for (int i=0; i<I; i++) {
// Do something
for (int j=0; j<J; j++) {
// Do something
for (int k=0; k<K; k++) {
// Do something
Update(a,b,c);
}
}
}

在一种方法中,Update(a,b,c) 是

a[i] += b[j] * c[k]

换个说法就是

b[j] += a[i] * c[k]

还有另一种方法,它是

c[k] += a[i] * b[j]

目前,我的代码到处都是重复的。 C# 中是否有一种模式可以避免重复代码?我很想使用委托(delegate),但委托(delegate)似乎会降低性能(这对我来说很关键)。

有没有办法为这种情况编写宏或内联委托(delegate)函数?

最佳答案

是这样的吗?

void DoUpdates(Action<int, int, int> update)
{
for (int i=0; i<I; i++) {
// Do something
for (int j=0; j<J; j++) {
// Do something
for (int k=0; k<K; k++) {
// Do something
update(i, j, k);
}
}
}
}

然后在调用者中

DoUpdates((int i, int j, int k) => { a[i] += b[j] * c[k]; });

这就是你要找的吗?

关于c# - 有没有办法在 C# 中内联委托(delegate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15079504/

29 4 0
文章推荐: c# - Asp.Net 获取屏幕宽度
文章推荐: C# 如何将带有 IList 的对象转换为 IList