我正在创建一个Windows窗体应用程序,我希望能够在按下按钮的列表中显示带有随机变量的消息框。我创建了一个名为SetRandomCode的类来设置列表,希望为变量' testVariable设置一个随机数。'我对c#相当陌生,所以我可能会以完全错误的方式解决这个问题,但这是我的代码:
SetRandomCode.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsFormsApplication2
{
public class SetRandomCode
{
List<string> randomCodes = new List<string>();
public void setCode()
{
Random r = new Random();
int index = r.Next(randomCodes.Count);
string testVariable = randomCodes[index];
randomCodes.Add("Test");
randomCodes.Add("Test 2");
randomCodes.Add("Test 3");
}
}
}
Form1.cs的
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(testVariable);
}
}
}
我得到的错误是&#39; testVariable&#39;在当前背景下不存在。
对此的任何帮助将不胜感激:)
答案 0 :(得分:3)
尝试在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];
}
}
然后在form1
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string testVariable = SetRandomCode.setCode();
MessageBox.Show(testVariable);
}
}
代码中的一些其他差异是在计算列表之前填充列表,否则返回的值将始终为0,在从中获取值之前也会填充列表以避免错误。
在这个新代码中,测试变量是在Form1中设置的,而不是在完全独立的类中。通过静态,类可以调用它的方法而不进行实例化,允许最接近你之前尝试的方法