gpt4 book ai didi

c# - 使用 Action 作为参数

转载 作者:太空狗 更新时间:2023-10-29 22:34:02 26 4
gpt4 key购买 nike

我正在创建一个执行图像处理的性能关键型应用程序。我正在使用名为 Pixel 的结构使用一些像素指针做一些处理。我有很多代码部分遍历整个位图数据,为了代码的可重用性和模块化,我正在设计一种方法,该方法将采取行动并将其应用于图像的所有像素(如 map 功能)。然而,当我写 Action<Pixel*> Visual Studio 提示代码说类型 Pixel*不能用作类型参数。全类都在unsafe上下文,我正在使用 Pixel指针无处不在,但我就是不能将像素指针用作 Action 的模板类。

我可以使用 Action<IntPtr>但我需要在每次迭代中将其转换为方法体内的适当指针,这会扼杀“性能关键”的整个想法。

最佳答案

似乎没有什么强制你使用 Action<T> ,因此您可以创建自己的委托(delegate)类型。我没有想出一种通用的方法来做到这一点,但这很有效:

unsafe delegate void PixelAction(Pixel* ptr);

请记住,如果这确实对性能至关重要,那么调用委托(delegate)比直接调用方法要慢。也许另一种方法会更好,例如复制代码(如果这对您的情况有效)或代码生成,在编译时或运行时使用 Reflection.Emit 或 CodeDOM。

关于c# - 使用 Action<PointerClass*> 作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7046710/

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