簡體   English   中英

在其他公共類中初始化變量時發生C#錯誤

[英]C# Error when initialize a variable in a different public 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#類的重要概念。 提前致謝。

您已聲明_name字段為static 這使它成為該類所有實例的“全局”或“共享”實體-因此對一個實例的更改將影響所有實例。

只需刪除static關鍵字,您的代碼即可按預期工作。

更好地使用自動屬性。 您不必為名稱創建私有成員。

公共財產

public string Name {get;set;}

會在內部自動為您創建所需的私有財產。

您的問題已由Jens Meinecke解決

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM