gpt4 book ai didi

c# - .Net 中嵌套对象的最佳实践是什么?

转载 作者:行者123 更新时间:2023-11-30 13:40:49 24 4
gpt4 key购买 nike

<分区>

这个问题与最佳实践有关...请不要将它与过早的优化混淆。

我注意到在 .Net 中,与平面对象或浅对象相比,深度对象引用需要相当长的时间来处理。例如:

object1.object2.object3.object4.Property

... 效率不高,因为我得出结论,每个对象都必须沿路径取消引用。这与 C 不同,在 C 中,Property 的内存引用将由编译器计算,而不是在运行时计算。

现在,我们显然不会为了速度而将 object2+ 的所有字段都压平到 object1 中。编码将很笨重且难以管理。但速度差异可能很大。

所以我的问题是,“构建深度对象与平面对象的最佳实践是什么?”此外,在简单地尝试将多个字段组合在一起的情况下使用结构是否有任何优势,例如:

public struct SizeData
{
public long Written;
public long Read;
public int Size;
}

这两个问题是相关的。

编辑

举例说明:

public class Leaf
{
public int Property;
}

public class Depth1
{
public Leaf Leaf;
}

public class Depth2
{
public Depth1 Depth1;
}

public class Depth3
{
public Depth2 Depth2;
}

private void button12_Click(object sender, EventArgs e)
{
Depth3 depth = new Depth3();
depth.Depth2 = new Depth2();
depth.Depth2.Depth1 = new Depth1();
depth.Depth2.Depth1.Leaf = new Leaf();
Leaf leaf = new Leaf();

var T1 = Environment.TickCount;

for (int i = 0; i < 100000000; i++)
{
depth.Depth2.Depth1.Leaf.Property++;
}

var T2 = Environment.TickCount;

for (int i = 0; i < 100000000; i++)
{
leaf.Property++;
}

var T3 = Environment.TickCount;

MessageBox.Show((T2 - T1).ToString() + Environment.NewLine +
((T3 - T2).ToString()));
}

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