struct - 为什么我不能使用 C#9 的“with”关键字来创建结构的副本(如使用记录)
问题描述
C# 9 有一个新特性。一种记录类型。记录只是一个类,但有一堆自动创建的函数和属性。但基本上这个想法(据我所知)是,一个行为类似于结构的类,用于复制、与 Equals 比较、不变性等。
记录类型还有一个带有关键字“with”的新功能。要创建记录的副本,您可以编写如下内容:var copy = original with { Property = new_value, };
现在我想知道,如果记录被设计为表现得像结构(但是是类)。为什么新的“with”关键字也不适用于结构。我的意思是,据我所知,结构具有此功能所必需的所有功能。就像它们是按价值复制的一样。
而不是对结构使用类似的功能,我必须编写一个复制构造函数,然后可以编写:var copy = new StructType(original) { Property = new_value, };
解决方案
推荐阅读
- powershell - Powershell 对两个字段进行排序并从 CSV 获取最新信息
- node.js - 如何在应用程序离线时管理聊天应用程序的消息
- xml - xsl for-each 内 for-each-group 分组
- javascript - 如何将图层设置为已编辑以调用 draw:edited
- python - QSortFilterProxyModel 按列值
- reactjs - 异步/等待 redux thunk 未正确返回对操作的承诺
- sql - 删除 SQL 中包含点和方括号的列
- android - 在单元测试中实例化应用程序类
- django - Django 2.1 SimpleTestCase,DateField 的 assertFieldOutput - AssertionError:ValidationError 未引发
- sequelize.js - Sequelize - 如何设置外键并加入它