编辑数组中另一个类的布尔值

时间:2016-11-22 13:18:59

标签: c# arrays class boolean

这可能是一个不成熟的问题,但我被卡住了。

我这里的代码是我的表格中的代码。这是我分配给我的按钮的事件 这些按钮应该在booleans中切换SomeClass的状态。

那些布尔都是public static bool boolA等。

这是我的表单代码。

    public void switchButton(object sender, EventArgs e)
    {
        Button[] buttons = { btnA, btnB };
        bool[] bools = { SomeClass.boolA, SomeClass.boolB };

        Button button = (Button)sender;
        int index = Array.IndexOf(buttons, button);


        if (bools[index])
        {
            bools[index] = false;
            button.Text = "Start";
        }
        else
        {
            bools[index] = true;
            button.Text = "Stop";
        }
    }

发生的事情是,按钮的文字被设置为"停止"但从来没有"开始"当我再次点击它时。

帮助非常适合。

1 个答案:

答案 0 :(得分:1)

boolvalue type。它们在.Net中是原子的。因此,当您将它们分配给新变量时,它们将被复制。所以在:

bool[] bools = { SomeClass.boolA, SomeClass.boolB };

bools[0]住在一个记忆地址中,SomeClass.boolA住在另一个记忆地址中。没有关系(与参考类型不同)。或者换句话说bools[0] != SomeClass.boolA。更改bools[0]不会影响SomeClass.boolA,反之亦然。

您可以通过运行以下代码来查看:

bool a = false;
bool[] bools = new bool[] {a};
bools[0] = true;

a == false; //true
bools[0] == true; //true

所以你不能按照你想要的方式做你想做的事。基本上你必须独立操纵SomeClass.boolA等,可能使用switchif