在c#中将信息从类转移到类的最佳方法

时间:2012-12-12 01:41:07

标签: c# class

我有疑问,将信息从班级转移到班级的最佳方法是什么。我的意思是,我尝试使用返回字符串,其中我在列表框中有3个项目,并且它们被命名为例如Easy NormalHard然后将字符串命名为项目。它对我来说效果不好,因为我加载了方法,他把字符串给了我,但我不能在其他课程中使用它。我是这样做的,首先在第一堂课中创造:

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

然后,在第二堂课:

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

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

2 个答案:

答案 0 :(得分:1)

我更喜欢使用枚举而不是“magic strings”。它们类型安全且错误率低。您可以将字符串转换为枚举,这很适合您的问题:

    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;           
        }
    }

答案 1 :(得分:0)

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

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

除此之外,你需要更具体地了解什么&#34;不起作用&#34;手段。我可以看到假设它正确设置它会起作用。但是,它不是很有效,因为比较字符串需要比较字符串中的每个字符。定义枚举更有意义。

public enum Difficulty
{
    Easy,
    Normal,
    Hard
}

并将其比作:

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

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