在不同的公共类中初始化变量时发生C#错误

在不同的公共类中初始化变量时发生C#错误,c#,class,C#,Class,我试图在一个公共类中初始化两个不同的变量,但是当我初始化第二个变量时,它会得到第一个变量的属性(本例中的名称)。在我设置了第二个的名称之后。第一个变量将其name属性更改为第二个名称。 例如,当我执行代码时: //Initialization and set of first var findLineToolA.Name = "findLineToolA"; findLineToolB = null; //After findLineToolB = new Cat

我试图在一个公共类中初始化两个不同的变量,但是当我初始化第二个变量时,它会得到第一个变量的属性(本例中的名称)。在我设置了第二个的名称之后。第一个变量将其name属性更改为第二个名称。 例如,当我执行代码时:

    //Initialization and set of first var
    findLineToolA.Name = "findLineToolA";
    findLineToolB = null;
    //After findLineToolB = new CatFindLineTool();
    findLineToolA.Name = "findLineToolA";
    findLineToolB.Name = "findLineToolA";

    //After findLineToolB.Name = "findLineToolB";
    findLineToolA.Name = "findLineToolB";
    findLineToolB.Name = "findLineToolB";

    public class CatFindLineTool 
    {
            private static string _name;

            public string Name
            {
                set
                {
                    _name = value;
                }
                get
                {
                    return _name;
                }
            }
    }
public class CatFindCornerTool 
{
    public CatFindLineTool findLineToolA;
    public CatFindLineTool findLineToolB;
    public CatFindCornerTool()
    {
     findLineToolA = new CatFindLineTool();
     findLineToolA.Name = "findLineToolA";
     findLineToolB = new CatFindLineTool();
     findLineToolB.Name = "findLineToolB";
    }
   }
我希望有人能帮我弄清楚为什么初始化多个变量时属性会混淆。我想这是因为我忽略了一个关于C#class的重要概念。
提前感谢。

您已将
\u name
字段声明为
静态
。这使得它在类的所有实例中都是“全局”或“共享”实体,因此对一个实例的更改将影响所有实例


只需删除
static
关键字,您的代码就可以正常工作。

您已将
\u name
字段声明为
static
。这使得它在类的所有实例中都是“全局”或“共享”实体,因此对一个实例的更改将影响所有实例


只需删除
static
关键字,您的代码就可以正常工作。

最好使用Auto属性。您不必为name创建私有成员

公共财产

public string Name {get;set;}
将自动在内部为您创建所需的私有属性


Jens Meinecke已经解决了您的问题

更好地使用自动属性。您不必为name创建私有成员

公共财产

public string Name {get;set;}
将自动在内部为您创建所需的私有属性


Jens Meinecke已经解决了您的问题

它确实有效。谢谢你的构想。从现在起我会一直记在心上,它确实有效。谢谢你的构想。从现在起我会记住的。谢谢你的提示。当我在设置变量时不需要额外的函数时,我也会记住这一点。谢谢你的提示。当我设置变量时不需要额外的函数时,我也会记住这一点。