public applybuttonform(string s)
{
InitializeComponent();
passingid.Text = s;
}
当我尝试这样做时,我得到了异常
NullReferenceEexception未处理
public applybuttonform(string s)
{
InitializeComponent();
if(string.IsNullOrEmpty(s))
{
passingid.Text = s;
}
}
如果我这样做我没有得到错误,但这并没有解决我的问题,因为我必须使用从另一个表单传递的字符串's'。那么,我现在能做什么呢?
答案 0 :(得分:4)
您的passingid
变量为空。错误在第二个版本中消失了,因为您实际上确保s
为空或空,而不是,因此不会发生分配给passingid.Text
。
TextBox passingid;
passingid.Text = s;
将产生您的错误,因为此时passid为null。
TextBox passingid = new TextBox();
passingid.Text = s;
会正常工作。
答案 1 :(得分:1)
嗯,你可能想要
if(!string.IsNullOrEmpty(s))
{
passingid.Text = s;
}
但这只是猜测。您可能希望使用整个异常编辑您的问题,包括哪个语句正在生成异常。
答案 2 :(得分:0)
请考虑以下代码:
public class PassingID2
{
private string _Text = null;
public string Text
{
get { return _Text; }
set { if (_Text.Length <= 0) _Text = value; }
}
}
public class PassingID1
{
public string Text { get; set; }
}
然后代码中的其他地方:
string s = string.Empty;
PassingID1 passingid1;
passingid1.Text = s; //This will cause a NullReferenceException because passingid1 is null
PassingID2 passingid2 = new PassingID2();
passingid2.Text = s; //This will cause a NullReferenceException because _Text is null
如您所见,两种情况都会导致异常。
另请注意,问题不在于“s”