C# WinForms调用函数后无法重用变量,报‘skw1不存在于当前上下文’
问题分析与解决
你的代码存在两个核心问题导致报错:
1. 函数调用名称拼写错误
你定义的生成随机数的函数是rnd_nmb(),但在function1里调用的是rnd_nmb1(),名称不匹配。
2. 变量作用域限制
skw1是rnd_nmb()函数内部的局部变量,它的作用域仅局限于该函数内部,在function1中无法直接访问。你需要接收rnd_nmb()的返回值,才能在function1里使用这个随机数。
另外,每次调用rnd_nmb()都创建新的Random实例,可能因为系统时钟精度问题生成重复的随机数,建议把Random实例提升为类级别的成员,避免重复初始化。
修正后的代码
// 将Random实例定义为类级别成员,避免重复创建 private Random _rnda = new Random(); int rnd_nmb() { int skw1 = _rnda.Next(1, 11); return skw1; } private void function1() { // 接收函数返回值,用变量存储后使用 int randomNum = rnd_nmb(); MessageBox.Show(Convert.ToString(randomNum)); }
也可以简化为直接使用返回值:
private Random _rnda = new Random(); int rnd_nmb() { return _rnda.Next(1, 11); } private void function1() { MessageBox.Show(rnd_nmb().ToString()); }
内容的提问来源于stack exchange,提问作者Kalim
相关产品推荐
相关产品推荐

