Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.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#_Winforms - Fatal编程技术网

C# 从c中按下按钮的列表中选择一个随机变量

C# 从c中按下按钮的列表中选择一个随机变量,c#,winforms,C#,Winforms,我正在制作一个Windows窗体应用程序,我希望能够显示一个带有随机变量的messagebox,该变量来自按下按钮时的列表。我创建了一个名为SetRandomCode的类,该类设置了列表,并希望为变量“testVariable”设置一个随机数。我对c相当陌生,因此我可能会以完全错误的方式进行操作,但下面是我的代码: SetRandomCode.cs 我得到的错误是“名称”testVariable在当前上下文中不存在 如果您对此有任何帮助,我们将不胜感激:请尝试使用SetRandomCode静态设

我正在制作一个Windows窗体应用程序,我希望能够显示一个带有随机变量的messagebox,该变量来自按下按钮时的列表。我创建了一个名为SetRandomCode的类,该类设置了列表,并希望为变量“testVariable”设置一个随机数。我对c相当陌生,因此我可能会以完全错误的方式进行操作,但下面是我的代码:

SetRandomCode.cs

我得到的错误是“名称”testVariable在当前上下文中不存在


如果您对此有任何帮助,我们将不胜感激:

请尝试使用SetRandomCode静态设置该类

public static class SetRandomCode
{

    public static string setCode()
    {
        List<string> randomCodes = new List<string>();
        randomCodes.Add("Test");
        randomCodes.Add("Test 2");
        randomCodes.Add("Test 3");
        Random r = new Random();
        int index = r.Next(0, randomCodes.Count);
        return randomCodes[index];
    }
}
代码中的一些其他差异是,在计算列表之前填充列表,否则返回值将始终为0,在从列表中获取值之前也填充列表以避免错误


在这段新代码中,测试变量是在Form1中设置的,而不是在完全独立的类中设置的。通过是静态的,类可以在不实例化的情况下调用其方法,从而允许最接近您之前尝试的方法

尝试使用SetRandomCode静态创建类

public static class SetRandomCode
{

    public static string setCode()
    {
        List<string> randomCodes = new List<string>();
        randomCodes.Add("Test");
        randomCodes.Add("Test 2");
        randomCodes.Add("Test 3");
        Random r = new Random();
        int index = r.Next(0, randomCodes.Count);
        return randomCodes[index];
    }
}
代码中的一些其他差异是,在计算列表之前填充列表,否则返回值将始终为0,在从列表中获取值之前也填充列表以避免错误


在这段新代码中,测试变量是在Form1中设置的,而不是在完全独立的类中设置的。通过是静态的,该类可以在不实例化的情况下调用其方法,从而允许最接近您之前尝试的方法

您的testVariable在setCode的范围内声明,并且只能在那里使用。此外,查看您的代码,您可以通过字符串testVariable=randomCodes[index];,从randomCodes获得一个值;,但接下来的几行将填充列表。您希望首先填充列表,然后从列表中选择值。testVariable在setCode范围内声明,只能在那里使用。此外,查看代码时,您通过字符串testVariable=randomCodes[index];,从randomCodes中获取值;,但接下来的几行将填充列表。您希望首先填充列表,然后从中选择值@rbm my bad,我的意思是让它将列表作为输入,谢谢,它仍然没有意义-您正在传递一个空列表,然后返回一个字符串…@rbm列表被传递,然后填充到方法中,该方法返回要在messagebox中显示的字符串,您的问题在哪里?这允许将额外的字符串添加到已存在的list@AlfieGoodacre如果列表仅用于设置代码,那么该函数是唯一应该知道它的函数。通过它的工作,传入一个空列表是不符合逻辑的,至少在这个示例中,您的方法是setCode,但您使用setCode随机码调用它@rbm my bad,我的意思是让它将列表作为输入,谢谢,它仍然没有意义-您正在传递一个空列表,然后返回一个字符串…@rbm列表被传递,然后填充到方法中,该方法返回要在messagebox中显示的字符串,您的问题在哪里?这允许将额外的字符串添加到已存在的list@AlfieGoodacre如果列表仅用于设置代码,那么该函数是唯一应该知道它的函数。在它工作时,传入一个空列表是不合乎逻辑的,至少在本例中是这样
public static class SetRandomCode
{

    public static string setCode()
    {
        List<string> randomCodes = new List<string>();
        randomCodes.Add("Test");
        randomCodes.Add("Test 2");
        randomCodes.Add("Test 3");
        Random r = new Random();
        int index = r.Next(0, randomCodes.Count);
        return randomCodes[index];
    }
}
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        string testVariable = SetRandomCode.setCode();
        MessageBox.Show(testVariable);
    }
}