我花了一些时间在此密码生成器上,但我实在太傻了,无法使其正常工作!

我有一个输入和一个输出文本框,其中包含生成的用户名和密码。

问题是第三个文本框“ inputLength”,我希望用户在GeneratePassword()中决定密码要保留多长时间

private void button1_Click(object sender, EventArgs e)
{
    char[] newRow = new char[] { '\r', '\n' };
    string[] name = input.Text.Split(newRow, StringSplitOptions.RemoveEmptyEntries);
    string result = "";
    for (int i = 0; i < name.Length; i++)
    {
        result += string.Format("{0}{1} # {2}\r\n",name[i].Substring(0, 3), i, GeneratePassword());
    }
    output.Text = result;
}

private static string GeneratePassword()
{
    int passwordLength = Int32.Parse(inputLength.Text);
    string result = "";
    string allowedChars = "1234567890qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM";
    Random random = new Random();
    for (int i = 0; i < inputLength; i++)
    {
        result += allowedChars[random.Next(allowedChars.Length)].ToString();
        System.Threading.Thread.Sleep(10);
    }
    return result;
        throw new NotImplementedException();
}

最佳答案

这段代码看起来像是在Windows Forms应用程序中,因为您已经为按钮事件处理程序(button1_Click)编写了代码,该事件处理程序随后调用了称为GeneratePassword的静态方法。

问题是静态GeneratePassword方法正在尝试访问实例成员inputLength,而它不能这样做。您有两种选择:


GeneratePassword设置为实例成员(删除static),以便它可以访问inputLength实例成员。
将值从inputLength传递到GeneratePassword,例如:

private static string GeneratePassword(string inputLength)


然后,您会这样称呼:

result += string.Format("{0}{1} # {2}\r\n",name[i].Substring(0, 3), i, GeneratePassword(inputLength.Text));

关于c# - 名称“inputLength”在当前上下文中不存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27404292/

10-10 16:05