C# - 更改处理程序对象

本文关键字:程序 对象 处理 | 更新日期: 2023-09-27 18:37:02

我有一些示例代码:

class SomeClass{
public static List<SomeClass> AllElements = new List<SomeClass>;
public int id;
public SomeClass(int element_id){
    SomeClass foundedElements = AllElements.Find( x => x.id == element_id);
    if( foundedElements == null){
     // Do some stuff
    }
    else{
     // I found element
    // I need take this found element and set "this"
    // like...:
    //this = foundedElements;
    }
}
}

如何将构造函数中的"this"对象设置为同一类中的另一个对象?

我需要它来创建一个类,其中我在项目中有此 id 的 1 个实例。

我可以创建一些静态方法,例如:

public static SomeClass Register(int id){
 SomeClass foundedElements = AllElements.Find( x => x.id == element_id);
    if( foundedElements == null){
     // run constructor
     // and set contructor like private member
    }
    else{
     return foundedElement;
    }
}

但是这个解决方案对我来说不是很好。我在构造函数中需要它。

编辑。:在构造函数中,我需要覆盖本身...喜欢:

this = someClassObject;

C# - 更改处理程序对象

您不能从自身内部将类的实例更改为自身的新实例。 正如您上面所说,解决此问题的方法是使用静态工厂方法。

另一种可能性是创建负责管理此集合的第二个类。