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

C#中静态变量connectionString无法获取_sn变量赋值的原因

问题原因分析

相关问题代码如下:

public void textServername_TextChanged(object sender, EventArgs e)
{
    _sn = textServername.Text;
}

public static string connectionString =  _sn ;
  • connectionString是静态字段,它的赋值操作会在所属类第一次被加载到内存时就执行,执行时机远早于窗体控件事件的触发时机。等textServername_TextChanged事件触发给_sn赋值的时候,connectionString的初始化赋值早就完成了,拿到的只是_sn的初始空值。
  • 如果_sn没有加static修饰符属于实例字段,静态成员无法直接访问实例成员,这段代码本身就无法通过编译,更不可能拿到赋值。
修复方案

你可以根据业务场景选择以下任意一种修复方式:

  1. 将固定赋值的静态字段改为动态取值的静态属性,每次读取时都会拿到最新的_sn值,注意要同步给_sn加上static修饰符:
public static string _sn;
public static string connectionString => _sn;
  1. 在_sn赋值的同时同步更新connectionString的值:
public static string connectionString;
public void textServername_TextChanged(object sender, EventArgs e)
{
    _sn = textServername.Text;
    connectionString = _sn;
}

内容的提问来源于stack exchange,提问作者jln

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:24:04