我知道这有点假设,因为我没有循环这个,它只在程序运行中出现一次或两次,所以它只会是一个完全不可思议的时间量,但我想知道是否有一个这些比其他更好,或者根本不重要,因为优化器会优化掉更糟糕的代码。以上哪两项效率更高?
我有这个类:
class FOO_Data
{
private string description, url;
private bool editable;
public FOO_Data(string description, string url, bool editable)
{
this.description = description;
this.url = url;
this.editable = editable;
}
public string Description { get { return description; } set { description = value; } }
public string URL { get { return url; } set { url = value; } }
public bool Editable { get { return editable; } set { editable = value; } }
}
在我的代码中一些其他的问题,我需要在这个类的一个数组编辑这个类的一个实例。
哪一个更好?这一个:
array[index] = new FOO_Data(data.Description, data.URL, System.Convert.ToBoolean(data.Editable));
或者这一个:
array[index].Description = data.Description;
array[index].Editable = Convert.ToBoolean(data.Editable);
array[index].URL = data.URL;
我会倾向于第一,但我不是很肯定。我希望你能提供任何见解。
非常感谢!
非常感谢您的洞察力。非常感谢:) – niemiro 2012-01-14 14:24:36
在一个循环中运行两个场景,使用千万次迭代并用秒表计时。我会假设唯一的区别是第二个不必为堆栈值在堆栈上分配新的空间。在第一个中,旧值被销毁并重新创建,这意味着GC需要清理。(字符串将被销毁并重新创建,无论如何) – 2012-01-14 14:25:56