gpt4 book ai didi

c# - 复制对象会降低性能吗?

转载 作者:太空狗 更新时间:2023-10-30 00:15:02 24 4
gpt4 key购买 nike

首先,我不知道这是否叫做“复制”一个对象,所以问题标题可能是错误的。我拥有的是一个名为 File 的自定义类,它包含一堆列表(5-6 个列表中有 1000 多个数字)和一些其他属性。我将所有文件都放在一个列表中以便能够访问它们 (LoadedFiles)。

我的问题是:如果我正在写一个方法但我不想写:

DoSomeOperation(LoadedFiles[2]);

而是:

File file2 = new File();
file2 = LoadedFiles[2];

DoSomeOperation(file2);

这是一种不好的做法吗?或者编译器足够聪明,知道它是同一个对象并直接从原始列表 (LoadedFiles) 访问它。

最佳答案

实际上你的类是一个引用类型,这意味着行 file2 = LoadedFiles[2] 只会复制一个指向创建对象的引用指针,你不会将对象的内容复制到一个新对象中。

就性能而言,您创建一个文件的新实例:

 File file2 = new File();

然后您立即将引用切换到另一个对象

file2 = LoadedFiles[2];

从而释放对您刚刚创建的对象的引用。这将导致发生不必要的垃圾收集。最好只执行 File file2 = LoadedFiles[2],如果它在风格上对您有影响的话。

查看引用类型与值类型的最佳位置是 C# 语言规范 http://www.microsoft.com/en-us/download/details.aspx?id=7029第 77 页。

关于c# - 复制对象会降低性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17692934/

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