Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中从类到类传递信息的最佳方法#_C#_Class - Fatal编程技术网

C# 在c中从类到类传递信息的最佳方法#

C# 在c中从类到类传递信息的最佳方法#,c#,class,C#,Class,我有一个问题,什么是最好的方式来传递信息从班级到班级。我的意思是,我尝试使用返回字符串,在列表框中有3个项目,它们被命名为例如EasyNormal和Hard,然后字符串被命名为项目。这对我来说效果不好,因为在我加载方法之后,他返回了字符串,但我不能在其他类中使用它。我是这样做的,通过在第一堂课中创建第一: if(listBox1.SelectedItem.ToString() == "Easy") { return "Easy"; } 然后,在第二节课上: if(class.string1()

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

if(listBox1.SelectedItem.ToString() == "Easy")
{
return "Easy";
}
然后,在第二节课上:

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

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

你似乎在问一些不同的问题

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

除此之外,你还需要更具体地说明“不起作用”的含义。如果设置正确,我可以看到它会工作。但是,这不是很有效,因为比较字符串需要比较字符串中的每个字符。定义枚举更有意义

public enum Difficulty
{
    Easy,
    Normal,
    Hard
}
这样比较一下:

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

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

我更喜欢使用枚举而不是“”。它们是类型安全的,并且不易出错。您还可以将字符串转换为枚举,这会很好地解决您的问题:

    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;           
    }
编辑:

这是一个首选项问题,但您也可以将
getcombility()
设置为属性,如下所示:

    public DifficultyEnum Difficulty {
        get {
            var difficulty = DifficultyEnum.NULL;
            var selItem = listBox1.SelectedItem.ToString();
            Enum.TryParse<DifficultyEnum>(selItem, out difficulty);
            return difficulty;           
        }
    }
公共困难列举困难{ 得到{ 变量难度=困难枚举.NULL; var selItem=listBox1.SelectedItem.ToString(); 枚举TryParse(选择项,输出难度); 返回困难; } }
看起来很无聊。我建议返回一个枚举,而不是返回一个字符串。另外,您可以将带有信息的类传递到没有该信息的类中,然后从属性访问该信息。我对答案的唯一问题是,您没有说明如何将字符串从列表框的ViewState(在OP的原始代码中)转换回enum。否则我会投票:)
    public DifficultyEnum Difficulty {
        get {
            var difficulty = DifficultyEnum.NULL;
            var selItem = listBox1.SelectedItem.ToString();
            Enum.TryParse<DifficultyEnum>(selItem, out difficulty);
            return difficulty;           
        }
    }