在不同的公共类中初始化变量时发生C#错误
我试图在一个公共类中初始化两个不同的变量,但是当我初始化第二个变量时,它会得到第一个变量的属性(本例中的名称)。在我设置了第二个的名称之后。第一个变量将其name属性更改为第二个名称。 例如,当我执行代码时:在不同的公共类中初始化变量时发生C#错误,c#,class,C#,Class,我试图在一个公共类中初始化两个不同的变量,但是当我初始化第二个变量时,它会得到第一个变量的属性(本例中的名称)。在我设置了第二个的名称之后。第一个变量将其name属性更改为第二个名称。 例如,当我执行代码时: //Initialization and set of first var findLineToolA.Name = "findLineToolA"; findLineToolB = null; //After findLineToolB = new Cat
//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已经解决了您的问题它确实有效。谢谢你的构想。从现在起我会一直记在心上,它确实有效。谢谢你的构想。从现在起我会记住的。谢谢你的提示。当我在设置变量时不需要额外的函数时,我也会记住这一点。谢谢你的提示。当我设置变量时不需要额外的函数时,我也会记住这一点。