gpt4 book ai didi

c# - 在 C# 中使用值参数模拟模板

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:56 24 4
gpt4 key购买 nike

有什么方法可以在 C# 中模拟 C++ 值模板参数?

template<bool flag>
void Method()
{
// Do some work
if constexpr(flag)
{
// Do something specific
}
// Do some more work
}

这样它会生成一个方法的两个版本,可以像这样调用:

Method<false>();
Method<true>();

这是出于性能原因,所以最好不要在 Method 中进行额外的调用。 方法 是性能关键部分,它被调用了数十亿次,因此从中挤出每个 CPU 周期非常重要。

另一方面,它有一个相当复杂的逻辑,所以我宁愿不要有两个拷贝。

我想我可以用泛型做一些事情,但它不是性能的最佳选择。所以现在我能想到的唯一方法就是为它创建某种模板代码生成器。但也许还有其他选择?或许可以使用 Roslyn 编译该方法的两个版本,以便创建具有特定参数的两个优化版本?

void Method(bool flag)
{
// Do some work
if (flag)
{
// Do something specific
}
// Do some more work
}

这样我就可以将它编译成:

void Method_false(false)
{
// Do some work
// Do some more work
}

和:

void Method_true(true)
{
// Do some work
// Do something specific
// Do some more work
}

有可能吗?

最佳答案

元编程在 C# 中是不可能的。在以下 SO 问题中以代码转换工具的形式寻找可能的替代方案:Is metaprogramming possible in C#?

关于c# - 在 C# 中使用值参数模拟模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55696134/

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