小编Ebr*_*yed的帖子

with 表达式 与 new 关键字

我正在阅读有关“C#9.0 中的新增功能”的开发博客,然后我注意到“with expression”。

\n\n
public data class Person\n{\n    public string FirstName { get; init; }\n    public string LastName { get; init; }\n}\nvar otherPerson = person with { LastName = "Hanselman" };\n
Run Code Online (Sandbox Code Playgroud)\n\n

他们说

\n\n
\n

记录隐式定义受保护的 \xe2\x80\x9ccopy 构造函数\xe2\x80\x9d \xe2\x80\x93 一个构造函数,该构造函数接受现有记录对象并将其逐个字段复制到新记录对象:

\n
\n\n
protected Person(Person original) { /* copy all the fields */ } // generated\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

with 表达式导致调用复制构造函数,然后在顶部应用对象初始值设定项以相应地更改属性。

\n
\n\n

我的问题是,\n“with”是否从“堆”复制整个旧对象,然后用新值(如果存在)修改它们,然后创建新实例?(IMO...我认为这是一种昂贵的方法)\nor“with”是否会让您只写更少的行而没有任何内存泄漏?

\n\n

如果我的第一个假设是正确的,那么使用“with”或“new”会更好,例如:var obj = new foo();

\n

c# heap-memory c#-9.0

1
推荐指数
1
解决办法
199
查看次数

标签 统计

c# ×1

c#-9.0 ×1

heap-memory ×1