小编Mis*_*Nad的帖子

C#Constructor重载:new object.FromOtherObject()?

我有两种不同类型的节点,我需要能够以相对简单的方式在它们之间进行转换.我正在考虑在构造函数中执行此操作,因为它会使代码更清晰.

NodeA nodea = new NodeA();

NodeB nodeb = new NodeB.FromNodeA(nodea);
Run Code Online (Sandbox Code Playgroud)

我一直在谷歌搜索几个小时,但未能找到办法做到这一点.我提出的最佳解决方案是;

public NodeB() { }

public static NodeB FromNodeA(NodeA theNodeA)
{
    NodeB b = new NodeB();
    b.Value = theNodeA.value;
    // etc..
}
Run Code Online (Sandbox Code Playgroud)

但是这使代码看起来更像一个时髦的东西;

NodeB b = NodeB.FromNodeA(nodea);
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望能够这样做:

NodeB b = new NodeB().FromNodeA(nodea);
Run Code Online (Sandbox Code Playgroud)

编辑; 或者是静态方法我已经做了更多(传统上)正确的方法来完成这个?

c# constructor overloading initialization initializer

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