c# - 什么可能导致作业无法完成?

标签 c# enums variable-assignment

我正在使用 C# 开发一个项目,由于某种原因,当我尝试为枚举变量赋值时,赋值不会发生。我会复制我的代码,但这实际上只是一个简单的作业。类似于:

testVar = MyEnum.TYPE_OF_ENUM;

其中 testVar 的类型为 MyEnum。当我使用 VisualStudio 调试器单步执行此行时,我可以看到 testVar 的值没有改变。什么可能导致作业失败?

编辑:

好的,我会提供更多背景信息。

public enum MyEnum1
{
    ONE,
    TWO,
    THREE,
    FOUR,
    FIVE,
    SIX,
    SEVEN,
    EIGHT
}

public enum MyEnum2
{
    A,
    B,
    C,
    D,
    E,
    F
}

public void StateMachine(MyEnum1 state1)
{
    if(state2 == MyEnum2.A)
    {
        switch (state1)
        {
            case MyEnum1.ONE:
                state2 = MyEnum2.B;
                MyFunc(MyEnum2.B);
                break;
            default:
                break;
        }
    }
    else if (state2 == MyEnum2.B)
    {
        switch(state1)
        {
            case MyEnum1.ONE:
                state2 = MyEnum2.B;
                MyFunc(MyEnum2.B);
                break;
            case MyEnum1.THREE:
                state2 = MyEnum2.C;
                MyFunc(MyEnum2.C);
                break;
            default:
                break;                
        }
    }
    // Etcetera
}

失败发生在state2 = another 分配上。 (state2是一个字段,而不是一个属性)

最佳答案

一种可能性是 setter 损坏的属性(property):

class C
{ 
    private MyEnum foo = MyEnum.Something;
    public MyEnum Foo 
    {
        get { return foo; }
        set { }
    }

    void DoSomething()
    {
        Foo = MyEnum.SomethingElse; // does nothing
    }
}

关于c# - 什么可能导致作业无法完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6834441/

相关文章:

c++ - 显示函数的枚举值

javascript - return 语句在 setter 中做什么?

c - 了解如何从函数内部更新原始二维数组

c# - EPPlus 不下载带有模板的 Excel 文件

c# - 在 WPF 中将有符号整数显示为无符号

unit-testing - 纠缠和测试枚举

generics - 如何实现为通用枚举实现通用特征的过程宏?

c# - 将 Big ZipArchive-MemoryStream 上传到 Azure

C# 查找最高数组值和索引

go - 你可以在 Go 中一次声明多个变量吗?