c# - 在循环中访问对象属性

标签 c# object properties

首先将对象属性赋值给变量而不是直接在循环中使用它更好吗?

假设我有一个位图 Bitmap img = new Bitmap("image.jpg") 并且我需要遍历所有像素以进行一些处理。对于大约 200 万像素的 1080p 图像。我使用 data.Stride 还是先将它们分配给变量 int dataStride = data.Stride 有关系吗?我每次都需要访问它来计算偏移量,但 dataStride 是图像的常数。

data = editImage.LockBits(new Rectangle(0, 0, editWidth, editHeight), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
byte* dataPtr = (byte*)data.Scan0;
dataStride = data.Stride;

我首先将它们分配给一个变量,因为我认为它必须先(每次)访问对象,然后(每次)访问对象中的整数,这样速度较慢。因为它是一个大循环......它加起来。因此,首先将属性分配给变量会更快,因为它可以直接访问 int 值。这是正确的吗?

最佳答案

是的。无论属性多么简单,访问它仍然有函数调用的开销。变量更快,尤其是当您执行某项操作 200 万次时。

关于c# - 在循环中访问对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10406355/

相关文章:

javascript - 将 for in 替换为带有对象的常规 for 循环

java - 在java中初始化对象的更有效方法?

c# - C#中的另一种获取属性名(这个是静态的)

c# - 如果我在 Observable 的订阅回调中抛出异常会发生什么?

c# - 使用 LINQ 在对象列表中分组来执行聚合

java - 本地文件或文件夹的属性窗口?

C# getters setters 样式

c# - MVVM 绑定(bind)到 Properties.Settings

c# - 如何使用包含在 Linq to SQL 中搜索字符串

c# - 确定 foreach 中的顺序(pnl 中的面板 p)