如何通过为其他对象分配具有相似字段来创建对象



我有一个带有一些值的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
}

您可以使用隐式转换运算符执行此操作:

class CopyClass
{
public int x;
public int y;
public CopyClass(FullClass fullObject)
{
x = fullObject.x;
y = fullObject.y;
}
public static implicit operator CopyClass(FullClass fc) => new CopyClass(fc);
}

但这在某种程度上混淆了你的意图。

就个人而言,我会选择new CopyClass(fullObject);,因为这清楚地表明您正在创建不同类型的副本。

最新更新