我知道这有点假设,因为我没有循环执行,它只在程序运行中发生一次或两次,所以这将是完全不明显的时间,但是我想知道其中之一是比其他方法要好,或者根本没有关系,因为优化器将优化较差的代码。

我有这个课:

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;


我倾向于第一个,但我不太确定。我会很感激您能提供的任何见解。

非常感谢!

最佳答案

如果array[index]null,这是第二位代码,尝试访问成员将抛出NullReferenceException

这是不会发生的,因为在代码的第一位分配了一个新构造的FOO_Data对象。

在性能方面,如果数组确实被完全填充,则几乎看不到任何区别,因为对象创建是一个非常轻的过程。

关于c# - 这两个中哪个更有效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8862751/

10-12 13:16