【发布时间】:2019-12-09 14:51:58
【问题描述】:
我有一个带有一些值的 FullClass。我想复制其中的一些值并将其作为副本保存,因此我创建了对应的 CopyClass。我如何重写此代码以在没有 new 关键字的情况下实现对象创建,并且只需像示例中那样分配值 - 以便更简单地使用。
class FullClass
{
public int x;
public int y;
public int z;
}
class CopyClass
{
public int x;
public int y;
public CopyClass(FullClass fullObject)
{
x = fullObject.x;
y = fullObject.y;
}
}
void AssignCopyObject()
{
//I want small copy of FullClass with some of it's values
CopyClass copyObject;
//How I create small class object
copyObject = new CopyClass(fullObject);
//How I want to create it automaticly by using assign of full class object
copyObject = fullObject; //ofc doesn't work
}
【问题讨论】:
-
听起来你在找Automapper
-
我不明白这个问题。复制构造函数有什么问题?
-
@amy 没什么,它有效 :D 我只是想知道你是否可以像我提到的那样写它。
-
这个问题有不同的答案,取决于你的实际用例和你想做什么;使用复制构造函数很清楚,并且表明它不是对同一对象的引用(您可以使用隐式转换将其隐藏);使用继承会混淆可变性,您应该继承行为而不是结构。
-
@Bizio 你可以,但是下一个阅读代码的人可能不会意识到它是副本而不是参考。
标签: c#