0

我有一个问题,将信息从班级转移到班级的最佳方式是什么。我的意思是,我尝试使用返回字符串,其中我在列表框中有 3 个项目,它们被命名为 eg Easy NormalHard然后字符串被命名为项目。它对我来说效果不佳,因为我加载了方法,他返回了字符串,但我不能在其他类中使用它。我这样做是通过在第一堂课中创建的:

if(listBox1.SelectedItem.ToString() == "Easy")
{
return "Easy";
}

然后,在二等舱:

if(class.string1() == "Easy")
{
Do something.
}

它不起作用。你们可以帮助我吗?或者这个问题太新手了,还得多学习多搜索。

4

2 回答 2

1

我更喜欢使用枚举而不是“魔术字符串”。它们是类型安全的并且不易出错。您也可以将字符串转换为枚举,这很适合您的问题:

    public enum DifficultyEnum {
        NULL,
        Easy,
        Medium,
        Hard
    }

    public DifficultyEnum GetDifficulty() {
        var difficulty = DifficultyEnum.NULL;
        var selItem = listBox1.SelectedItem.ToString();
        Enum.TryParse<DifficultyEnum>(selItem, out difficulty);
        return difficulty;           
    }

然后在你的另一个班级:

    swtich (classInstance.GetDifficulty()) {
        case Easy:
            break;
        case Medium:
            break;
        case Hard:
            break;

        case NULL: /*Hopefully you don't get here but be defensive and expect that somehow they'll manage to do so =P */
            break;
    }

编辑:

这是一个偏好问题,但您也可以将其设置GetDifficulty()为属性,如下所示:

    public DifficultyEnum Difficulty {
        get {
            var difficulty = DifficultyEnum.NULL;
            var selItem = listBox1.SelectedItem.ToString();
            Enum.TryParse<DifficultyEnum>(selItem, out difficulty);
            return difficulty;           
        }
    }
于 2012-12-12T01:52:32.150 回答
0

你似乎在这里问了几个不同的问题。

您在类之间传输信息的方式取决于您使用的类的类型和您要传输的数据类型。共享数据的最简单方法可能是使用提供数据的方法(作为返回值、引用参数或返回的包含数据的类)。

除此之外,您需要更具体地了解“不起作用”的含义。假设它设置正确,我可以看到它会起作用。但是,它不是很有效,因为比较字符串需要比较字符串中的每个字符。定义一个枚举会更有意义。

public enum Difficulty
{
    Easy,
    Normal,
    Hard
}

并像这样比较它:

if(classInstance.Difficulty == Difficulty.Easy)
{
    // Do something.
}

当然,您的班级需要确定选择了哪个列表项并将其转换为枚举。

于 2012-12-12T01:50:59.410 回答