You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:25:52