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

时间:2017-06-05 03:54:17

标签: c# class

我正在尝试在公共类中初始化2个不同的变量,但是当我初始化第二个变量时,它获取第一个变量的属性(在此示例中为Name)。我设置第二个名称后。第一个变量将其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#类的重要概念。 提前谢谢。

2 个答案:

答案 0 :(得分:3)

您已将_name字段声明为static。这使它成为一个全球性的'或者'分享'跨类的所有实例的实体 - 因此对一个实例的更改将影响所有实例。

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

答案 1 :(得分:2)

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

公共财产

public string Name {get;set;}

将在内部自动为您创建所需的私有属性。

您的问题已由Jens Meinecke解决