我有一节课
public class AClass
{
private integer x,y,z;
public AClass()
{
Initialize x,y,z;
}
public AClass RetB(integer x, AClass C)
{
AClass B;
B = new AClass();
B = dosomething(x, C);
return B;
}
}如果我想使用RetB(y,C),我可以在main-method中这样做:
AClass MyB;
MyB = new Aclass();
MyB = RetB(2, CC);但是这样构造函数会被调用两次,一次是针对MyB,另一次是在RetB中。这对于C#来说是自然的吗,还是有可能/需要避免呢?
谢谢
发布于 2015-03-20 21:46:06
返回新对象的静态方法是一种非常常见的模式。例如,它们在.NET库中用于各种int.Parse (通常用于解析)(以及大量其他功能)。正如你所说的,当直接使用构造函数的重载不能准确地传输正在发生的事情时,就会使用它们。
public class AClass
{
private int x, y, z;
public static readonly AClass Empty = new AClass();
// So that you can't do a new AClass() outside of this class
private AClass()
{
}
public static AClass RetB(int x, AClass c)
{
AClass b;
b = new AClass();
b.x = x;
if (c != null)
{
b.y = c.y;
b.z = c.z;
}
return b;
}
}使用:
AClass myA = AClass.RetB(1, null);
AClass myB = AClass.RetB(0, myB);注意,作为构造函数private,它是非法的
AClass myC = new AClass(); // doesn't compilehttps://stackoverflow.com/questions/29167388
复制相似问题