0
public applybuttonform(string s)
{
    InitializeComponent();
    passingid.Text = s;   
}

当我尝试这样做时,我得到了异常

NullReferenceEexception 未处理

public applybuttonform(string s)
{
    InitializeComponent();
    if(string.IsNullOrEmpty(s))
    {
       passingid.Text = s;
    }         
}

如果我这样做,我不会收到错误消息,但这并不能解决我的问题,因为我必须使用从另一个表单传递的字符串 's'。那么,我现在能做什么?

4

3 回答 3

4

您的passingid变量为空。该错误在第二个版本中消失了,因为您实际上确保它s为 null 或空,但事实并非如此,因此分配给passingid.Text不会发生。

TextBox passingid;
passingid.Text = s;

将产生您的错误,因为此时passingid 为空。

TextBox passingid = new TextBox();
passingid.Text = s;

会正常工作。

于 2013-07-24T21:10:37.590 回答
1

好吧,你可能想要

if(!string.IsNullOrEmpty(s))
{
   passingid.Text = s;
} 

但这只是一个猜测。您可能希望使用整个异常来编辑您的问题,包括生成异常的语句。

于 2013-07-24T21:09:35.760 回答
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”

于 2013-07-24T21:36:40.327 回答