我正在尝试在公共类中初始化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#类的重要概念。 提前谢谢。
答案 0 :(得分:3)
您已将_name
字段声明为static
。这使它成为一个全球性的'或者'分享'跨类的所有实例的实体 - 因此对一个实例的更改将影响所有实例。
只需删除static
关键字,您的代码就可以正常运行。
答案 1 :(得分:2)
更好地使用自动属性。您不必为名称创建私有成员。
公共财产
public string Name {get;set;}
将在内部自动为您创建所需的私有属性。
您的问题已由Jens Meinecke解决