C# 哪一个对性能最好

C# 哪一个对性能最好,c#,performance,C#,Performance,有人能帮我解释一下吗。 哪一个对性能更好 foreach (DataRow row in prodStockLevels.Rows) { string stock = row["stpt_Stock"].ToString(); textbox.text = stock; } 或 即使数据表是巨大的,也会有很大的不同。我只是想知道,如果直接传递数据,是否会提高性能。效率方面不会有明显的差异-我怀疑它是否可以测量,如果它存在的话 事实上,分配给局

有人能帮我解释一下吗。 哪一个对性能更好

    foreach (DataRow row in prodStockLevels.Rows)
    {
       string stock = row["stpt_Stock"].ToString();
       textbox.text = stock;
    }


即使数据表是巨大的,也会有很大的不同。我只是想知道,如果直接传递数据,是否会提高性能。

效率方面不会有明显的差异-我怀疑它是否可以测量,如果它存在的话

事实上,分配给局部变量基本上是不相关的。表达式
行[“stpt_Stock”]的值。ToString()
将以任何方式结束在堆栈上。唯一的区别是堆栈插槽是否有名称

在调试器中,它可能会产生微小但几乎可以测量的差异,因为它可能会有一些额外的含义,但肯定不足以令人担忧


我想我更担心的是,你反复给同一个
textBox.Text
属性赋值,只有最后一个属性才是相关的。你最好只取最后一行…

效率上没有明显的差别——我怀疑它是否可以测量,如果它存在的话

事实上,分配给局部变量基本上是不相关的。表达式
行[“stpt_Stock”]的值。ToString()
将以任何方式结束在堆栈上。唯一的区别是堆栈插槽是否有名称

在调试器中,它可能会产生微小但几乎可以测量的差异,因为它可能会有一些额外的含义,但肯定不足以令人担忧


我想我更担心的是,你反复给同一个
textBox.Text
属性赋值,只有最后一个属性才是相关的。你最好只取最后一行…

没有区别。编译后的代码可能完全相同。

没有区别。编译后的代码可能完全相同。

没有区别。
以下速度将比这两种速度都快:

 textbox.text = prodStockLevels.Rows.Last()["stpt_Stock"].ToString();
没有区别。
以下速度将比这两种速度都快:

 textbox.text = prodStockLevels.Rows.Last()["stpt_Stock"].ToString();

谢谢,乔恩,这太棒了。我只是以文本框为例,但谢谢汉克斯·乔恩,这太棒了。我只是以文本框为例,但Thanksmit可能比两者都快。优化器可以看到从未使用分配的值,并完全跳过分配。不是说是,而是说could@Rune:取消属性分配的优化器将造成混乱。文本属性确实会触发一些逻辑和重新绘制。如果确实有副作用,那么优化器将无法删除分配,但您的代码也将无法工作,因为这正是您刚才优化的方式可能比这两者都快。优化器可以看到从未使用分配的值,并完全跳过分配。不是说是,而是说could@Rune:取消属性分配的优化器将造成混乱。文本属性确实会触发一些逻辑和重新绘制。如果确实有副作用,那么优化器将无法删除分配,但您的代码也无法工作,因为这正是您刚刚优化的内容