自定义转换与构造函数

xyq1986 2009-01-12 09:17:49
做业务时,有时候会遇到两个实体的字段有部分相同,而又要将A类的实体转成B类的实体,比如在将类数据导成B类数据时,A和B都有一些共同的属性,也有一些各不相同的属性,A导成B时,只需将相同的属性赋给B就行了。

public class A
{
public string Name { get; set; }
public int Age { get; set; }
public string Position { get; set; }

public static implicit operator B(A a)
{
B b = new B();
b.Name = a.Name;
b.Age = a.Age;
return b;
}
}

public class B
{
public string Name { get; set; }
public int Age { get; set; }
public int Power { get; set; }

public B() { }
public B(A a)
{
this.Name = a.Name;
this.Age = a.Age;
}
}

这时是用自定义转换的方法呢,还是用给B添加一个传入A参数的构造函数呢?
这两种方法,哪种比较妥当?分析一下。
...全文
106 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
quanhuang98bisha 2009-01-17
  • 打赏
  • 举报
回复
up
xyq1986 2009-01-17
  • 打赏
  • 举报
回复
up
walkingmu 2009-01-13
  • 打赏
  • 举报
回复
有很多种方法的,在构造函数中传入A是比较高效的方法。但是使用时却有局限性。比如每次转换只能重新实例化一个B。
其实还可以重载=运算符。或者重载强制类型转换运算符。这样随便在那里都可以直接用=赋值。
构造函数高效,强制转换和=运算使用比较灵活。具体要看项目中的应用,不存在哪个方法更好些。
pbmlly 2009-01-13
  • 打赏
  • 举报
回复
关注..
ares128 2009-01-13
  • 打赏
  • 举报
回复
我是这样看的 如果你的代码只有自己用 不提供给别人 怎么写都无所谓
如果要给别人用的话 我的建议是打一个静态工具包类 方便别人查找 想这样转换函数四处都是 不仅找起来不方便 也不利于维护

另 更加java来说 不建议使用运算符重载

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧