C# C语言中的堆栈溢出#

C# C语言中的堆栈溢出#,c#,.net,C#,.net,我有一个寄存器,用于注册我需要的所有对象: public static class ObjectRegister { public static List<IObject> RegisteredObjects = new List<IObject>(); static ObjectRegister() { RegisteredObjects.Add(new Object1()); RegisteredObjects.

我有一个寄存器,用于注册我需要的所有对象:

public static class ObjectRegister
{
    public static List<IObject> RegisteredObjects = new List<IObject>();
    static ObjectRegister()
    {
        RegisteredObjects.Add(new Object1());
        RegisteredObjects.Add(new Object2());
        RegisteredObjects.Add(new Object3());
    }
}
这是构造器:

public Object1(parametar newParam)
    {
        this.param = newParam;
    }
它会在此行上保持trowing StackOverflow异常:

this.param = newParam;
尝试了所有创建实例、默认构造函数、空对象等的可能性,但没有任何效果。。。有什么想法吗

塔克斯

编辑: Object1类的代码:

public class Object1: IObject
{
    public parametar param
    {
        get { return this.param; }
        set { this.param = value; }
    }

    internal Object1() { }

    public Object1(parametar newParam)
    {
        this.param = newParam;
    }        


    public bool test(parametar param)
    {
        // I do the propper checking of the param here, and return the result
    }


    public IObject CreateInstance(parametar param)
    {
        return new Object1(param);
    }
} 

在Object1中,这就是您的问题:

public parametar param { get { return this.param; } set { this.param = value; }
该属性以递归方式调用自身-这就是为什么会出现堆栈溢出。不要那样做。相反,您可能需要一个自动实现的属性:

public parameter param { get; set; }
或使用专用支持字段:

private parametar param;
public parametar Param { get { return param; } set { param = value; }
此外,我强烈建议您开始关注,并注意类型和成员名称的拼写


因此,您可能希望您的类被称为
Parameter
——尽管就个人而言,我至少会尝试让它更具描述性,例如
QueryParameter
或类似的东西。同样地,
Object1
也不是一个语义上有意义的名称-我希望它不是您真实代码中的名称。

您需要显示Object1类的代码。您真的有一个名为
parametar
的类吗?
code
公共类Object1:ioobject{public parametar param{get{返回this.param;}设置{this.param=value;}}内部Object1(){}公共Object1(parametar newParam){this.param=newParam;}公共bool测试(parametar param){//我在这里对参数执行propper检查,并返回结果}public IObject CreateInstance(parametar param){return new Object1(param);}
code
@user1064633:不要在注释中包含代码-将其放入问题中。理想情况下,发布一个简短但完整的程序来演示问题。Thanx:)这就是问题所在
public parameter param { get; set; }
private parametar param;
public parametar Param { get { return param; } set { param = value; }